ساخت یک برنامه ساده در JAVA

اجازه بدهيد يک برنامه بسيار ساده به زبان جاوا بنويسيم. اين برنامه يک پيغام را نمايش می‌دهد. در اين درس می‌خواهم ساختار و دستور زبان يک برنامه ساده جاوا را توضيح دهم. قبل از ایجاد برنامه به این دو نکته خیلی مهم توجه کنید:

یکی از تنظیماتی که قبل از شروع این درس توصیه می کنیم که اعمال کنید این است که پسوند فایل ها داخل ویندوز را قابل مشاهده کنید. برای این کار به My Computer رفته و به صورت زیر از منوی Organize گزینه Folder and search options را بزنید:

از پنجره باز شده به صورت زیر به سربرگ View رفته و تیک کنار گزینه Hide Extension for khnown file types را بردارید:

در ادامه شما را نحوه ایجاد اولین برنامه در جاوا با و بدون استفاده از NetBeans آشنا می کنیم.

بدون استفاده از NetBeans

همانطور که گفته شد، شما برای کامپایل و اجرای برنامه‌های جاوا به ابزاری به نام JDK نیاز دارید. JDK مخفف عبارت Java Development Kit است و شامل ابزارهای مورد نیاز شما برای اجرای برنامه‌های جاوا می‌شود. این مجموعه شامل ابزاری به نام JVM یا Java Virtual Machine است که ماشین مجازی جاوا نام دارد و وظیفه‌ی کامپایل و اجرای کدهای شما را برعهده دارد. خود JVM هم شامل ابزارهای دیگری است. مثلاً javac یا java compiler اختصاصاً وظیفه‌ی کامپایل کردن برنامه‌ها را برعهده دارد. در درس قبل JDK را نصب کردیم و الان فرض می‌کنیم که شما هیچ IDE مانند netbeans و یا eclipse در اختیار ندارید و می‌خواهید یک برنامه جاوا بنویسید. در این برنامه می‌خواهیم پیغام Welcome to JAVA Tutorials چاپ شود. ابتدا یک ویرایشگر متن مانند Notepad را باز کرده و کدهای زیر را در داخل آن نوشته (حروف بزرگ و کوچک را رعایت کنید) و با پسوند java ذخیره کنید :

public class MyFirstProgram 
{
    public static void main(String[] args) 
    {
        System.out.println("Welcome to JAVA Tutorials!");
    }  
} 

و در درایو D و با نام و پسوند MyFirstProgram.java ذخیره می‌کنیم :


یک بار دیگر تاکید می کنم که فایل باید به صورت زیر و با پسوند java ذخیره و نوع کدگذاری (Encoding) آن بر روی ANSI قرار داده شود:

نگران توضیح کدهای بالا نباشید، در ادامه در مورد آنها توضیح می‌دهیم. پس شکل نهایی برنامه، باید به صورت زیر باشد :
run-java-file-with-jdk-12

حال نوبت به اجرای برنامه می‌رسد :

run-java-file-with-jdk-12
فایل ما در درایو D قرار دارد. ابتدا cmd را باز کرده و کد زیر را در داخل آن نوشته و دکمه Enter را می‌زنید :

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\JavaTutorials>d:

D:\>javac MyFirstProgram.java

D:\>

با اجرای کد بالا هیچ پیغامی چاپ نمی‌شود چون که دستور javac برنامه را کامپایل کرده و یک فایل همنام با کلاس MyFirstProgram و با پسوند class. ایجاد می‌کند :
run-java-file-with-jdk-20
اگر فایل ایجاد شده یعنی MyFirstProgram.class را با برنامه NotePad باز کنید مشاهده می‌کنید که شامل کدهایی نا مفهوم می‌باشد :
byte-code-in-java
به این کدهای نامفهوم که برای ماشین مجازی جاوا (JVM) قابل فهم می‌باشد، ByteCode گفته می‌شود. حال برای اجرای فایل MyFirstProgram.class باید دستور زیر را بنویسیم :

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\JavaTutorials>d:

D:\>javac MyFirstProgram.java

D:\>java MyFirstProgram
Welcome to JAVA Tutorials!

D:\>

مشاهده می‌کنید که فایل جاوا اجرا و پیغام Welcome to JAVA Tutorials چاپ شد.

با استفاده از NetBeans

برنامه NetBeans را اجرا کنيد. از مسيري که در شکل زير نشان داده شده است يک پروژه جديد ايجاد کنيد :
Creating-Simple-Program-Java (1)
حال با يک صفحه مواجه می‌شوید. طبق شماره‌هایی که در شکل زير نمايش داده شده‌اند گزینه‌ها را انتخاب کرده و به مرحله بعد برويد :
Creating-Simple-Program-Java (2)

با زدن دکمه Next صفحه‌ای به صورت زير نمايش داده می‌شود. در اين پنجره نام پروژه‌تان (MyFirstProgram) را نوشته و سپس بر روي دکمه Finish کليک کنيد :

Creating-Simple-Program-Java (3)
بعد از فشردن دکمه Finish ، وارد محيط کدنويسي برنامه به صورت زير می‌شویم :
Creating-Simple-Program-Java (4)

محيط کدنويسي یا IDE جايي است که ما کدها را در آن تايپ می‌کنیم. کدها در محيط کدنويسي به صورت رنگي تايپ می‌شوند در نتيجه تشخيص بخشهاي مختلف کد را راحت می‌کند. همانطور که در شکل بالا مشاهده می‌کنید ما کدهاي پيشفرض را به سه قسمت تقسيم کرده‌ایم. قسمت اول Package، قسمت دوم کلاس و قسمت سوم متد ()main. نگران اصطلاحاتي که به کار برديم نباشيد آنها را در فصول بعد توضيح خواهم داد. در محل کد نويسي کدهايي از قبل نوشته شده که براي شروع شما آنها را پاک کنيد و کدهاي زير را در محل کدنويسي بنويسيد :

package myfirstprogram;

public class MyFirstProgram 
{
    public static void main(String[] args) 
    {
        System.out.println("Welcome to JAVA Tutorials!");
    }  
} 

ساختار يک برنامه در جاوا

مثال بالا ساده‌ترین برنامه‌ای است که شما می‌توانید در جاوا بنويسيد. هدف در مثال بالا نمايش يک پيغام در صفحه نمايش است. هر زبان برنامه نويسي داراي قواعدي براي کدنويسي است. اجازه بدهيد هر خط کد را در مثال بالا توضيح بدهيم. در خط اول Package تعريف شده است که شامل کدهاي نوشته شده توسط شما است و از تداخل نامها جلوگيري می‌کند. درباره Package در درسهاي آينده توضيح خواهيم داد.
در خط 4 آکولاد (}) نوشته شده است. آکولاد براي تعريف يک بلوک کد به کار می‌رود. جاوا يک زبان ساخت يافته است که شامل کدهاي زياد و ساختارهاي فراواني می‌باشد. هر آکولاد باز ({) در جاوا بايد داراي يک آکولاد بسته (}) نيز باشد. همه کدهاي نوشته شده از خط 4 تا خط 9 يک بلوک کد است.
در خط 3 يک کلاس تعريف شده است. درباره کلاسها در فصلهاي آينده توضيح خواهيم داد. در مثال بالا کدهاي شما بايد در داخل يک کلاس نوشته شود. بدنه کلاس شامل کدهای نوشته شده از خط 4 تا 9 می‌باشد. خط 5 متد ()main يا متد اصلي ناميده می‌شود. هر متد شامل يک سري کد است که وقتي اجرا می‌شوند که متد را صدا بزنيم. درباره متد و نحوه صدا زدن آن در فصول بعدي توضيح خواهيم داد. متد ()main نقطه آغاز اجراي برنامه است. اين بدان معناست که ابتدا تمام کدهاي داخل متد ()main و سپس بقيه کدها اجرا می‌شود. درباره متد ()main در فصول بعدي توضيح خواهيم داد. متد ()main و ساير متدها داراي آکولاد و کدهايي در داخل آن‌ها می‌باشند و وقتي کدها اجرا می‌شوند که متدها را صدا بزنيم. هر خط کد در جاوا به يک سيميکولن (;) ختم می‌شود. اگر سيميکولن در آخر خط فراموش شود برنامه با خطا مواجه می‌شود. مثالي از يک خط کد در جاوا به صورت زير است :

System.out.println("Welcome to JAVA Tutorials!");

اين خط کد پيغام Welcome to JAVA Tutorials! را در صفحه نمايش نشان می‌دهد. از متد ()println براي چاپ يک رشته استفاده می‌شود. يک رشته گروهي از کاراکترها است که به وسيله دابل کوتيشن (“) محصور شده است. مانند :“Welcome to JAVA Tutorials!”
يک کاراکتر می‌تواند يک حرف، عدد، علامت يا …. باشد. در کل مثال بالا نحوه استفاده از متد ()println نشان داده شده است. اين متد يک متد از کلاس PrintStream بوده و از آن براي چاپ مقدير استفاده می‌شود. out يک فيلد استاتيک از کلاس System و کلاس System هم يک کلاس از پيش تعريف شده در جاوا می‌باشد. جاوا فضاي خالي و خطوط جديد را ناديده می‌گیرد. بنابراين شما می‌توانید همه برنامه را در يک خط بنويسيد. اما اينکار خواندن و اشکال زدايي برنامه را مشکل می‌کند. يکي از خطاهاي معمول در برنامه نويسي فراموش کردن سيميکولن در پايان هر خط کد است. به مثال زير توجه کنيد :

System.out.println("Welcome to JAVA Tutorials!");

جاوا فضاي خالي بالا را ناديده می‌گیرد و از کد بالا اشکال نمی‌گیرد. اما از کد زير ايراد می‌گیرد.

System.out.println(;
        "Welcome to JAVA Tutorials!");

به سيميکولن آخر خط اول توجه کنيد. برنامه با خطاي نحوي مواجه می‌شود چون دو خط کد مربوط به يک برنامه هستند و شما فقط بايد يک سيميکولن در آخر آن قرار دهيد. هميشه به ياد داشته باشيد که جاوا به بزرگي و کوچکي حروف حساس است. يعني به طور مثال MAN و man در جاوا با هم فرق دارند. رشته‌ها و توضيحات از اين قاعده مستثني هستند که در درسهاي آينده توضيخ خواهيم داد. مثلاً کدهاي زير با خطا مواجه می‌شوند و اجرا نمی‌شوند :

system.out.println("Welcome to JAVA Tutorials!");
SYSTEM.OUT.PRINTLN("Welcome to JAVA Tutorials!");
sYsTem.oUt.pRinTLn("Welcome to JAVA Tutorials!");

تغيير در بزرگي و کوچکي حروف از اجراي کدها جلوگيري می‌کند. اما کد زير کاملاً بدون خطا است :

System.out.println("Welcome to JAVA Tutorials!");

هميشه کدهاي خود را در داخل آکولاد بنويسيد.

{
  statement1;
}

اين کار باعث می‌شود که کدنويسي شما بهتر به چشم بيايد و تشخيص خطاها راحت‌تر باشد. يکي از ويژگيهاي مهم جاوا نشان دادن کدها به صورت تو رفتگي است بدين معني که کدها را به صورت تو رفتگي از هم تفکيک می‌کند و اين در خوانايي برنامه بسيار مؤثر است.

ذخيره پروژه و اجراي برنامه

براي ذخيره پروژه و برنامه می‌توانید به مسير File > Save All برويد يا از کليدهاي ميانبر Ctrl+Shift+S استفاده کنيد. همچنين می‌توانید از قسمت Toolbar بر روي شکل زير کليک کنيد :

Creating-Simple-Program-Java (5)
و براي اجراي برنامه هم از فلش سبزرنگ موجود در Toolbar و يا دکمه F6 استفاده کنيد :

Creating-Simple-Program-Java (7)
با اجراي برنامه بالا مشاهده می‌کنید که رشته Welcome to JAVA Tutorials! در خروجي برنامه به صورت زير نمايش داده می‌شود :
Creating-Simple-Program-Java (8)

وجود خط سبز در پايين فلش قرمز در شکل بالا نشان دهنده اجراي بدون نقص برنامه می‌باشد. حال که با خصوصيات و ساختار اوليه جاوا آشنا شديد در دسهاي آينده مطالب بيشتري از اين زبان برنامه نويسي قدرتمند خواهيد آموخت.

استفاده از Package

برای دسته بندی کلاس‌ها و قرار دادن کلاس‌های مرتیط با هم در یک مکان، جاوا از مفهومی به نام بسته یا package استفاده می‌کند. Package معادل فضای نام در سی شارپ هستند. یک دلیل برای گروه بندی کلاس‌ها در package این است که امکان دارد دو برنامه نویس از دو کلاس هم نام استفاده کنند. با این کار از چنین برخوردهایی جلوگیری به عمل می‌آید. یعنی اگر دو کلاس هم نام در دو Package غیر همنام باشند مشکلی به وجود نمی‌آید. همانطور که در مثال بالا دیدید به طور پیشفرض NetBeatns هنگام ایجاد برنامه یک Package همنام با اسمی که برای برنامه انتخاب کرده‌ایم با حروف کوچک و در داخل این Package هم کلاسی به همین اسم ایجاد می‌کند :

package myfirstprogram;

public class MyFirstProgram 
{
    ...  
}

برای وارد کردن کلاس یک Package در داخل Package دیگر از کلمه کلیدی import به صورت زیر استفاده می‌شود :

import PackageName.ClassName

همانطور که در مثال بالا مشاهده می‌کنید برای استفاده از کلاسی که در یک Package قرار دارد در Package دیگر ابتدا کلمه import سپس نام Package ، بعد علامت نقطه و در آخر نام کلاس را می‌نویسیم. مثلاً برای استفاده از کلاس MyFirstProgram مربوط به پکیج myfirstprogram به صورت زیر عمل می‌شود :

import myfirstprogram.MyFirstProgram;

بسته‌ها را می‌توان به صورت تو در تو تعریف کرد. در این حالت در تعریف بسته یک کلاس، از بیرونی‌ترین بسته شروع کرده و هر بسته را با نقطه (.) به بسته بعدی متصل می‌کنیم :

import firstPackage.secondPackage.ClassName

نکته‌ای که بهتر است در همین جا به آن اشاره کنم این است که اگر بخواهید کد زیر را بدون استفاده از NetBeans کامپایل و اجرا کنید، کامپایل می‌شود ولی در زمان اجرا با خطای Error: Could not find or load main class MyFirstProgram مواجه می‌شوید :

package myfirstprogram;

public class MyFirstProgram 
{
    public static void main(String[] args) 
    {
        System.out.println("Welcome to JAVA Tutorials!");
    }  
} 

کد بالا را با نام و پسوند MyFirstProgram.java و در درایو D ذخیره کنید. حال cmd را اجرا کرده و سعی کنید کد بالا را کامپایل و اجرا نمایید :

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\YounesJava>d:

D:\>javac MyFirstProgram.java

D:\>java MyFirstProgram
Error: Could not find or load main class MyFirstProgram

D:\>java -cp . myfirstprogram.MyFirstProgram
Welcome to JAVA Tutorials!

همانطور که مشاهده می‌کنید برای کامپایل کد بالا به صورت زیر عمل کرده‌ایم :

javac MyFirstProgram.java

اما برای اجرای کد، اگر از دستور زیر استفاده کنیم با خطا مواجه می‌شویم :

java MyFirstProgram

دلیل وجود خطا، خط اول کد، یعنی package myfirstprogram; می‌باشد. برای رفع این مشکل یا باید خط مذکور را از برنامه حذف و برنامه را مجدداً کامپایل و اجرا کرد یا اگر آن را پاک نکنید باید از کد زیر برای اجرای کد استفاده کنید :

java -cp . myfirstprogram.MyFirstProgram

که در این صورت برنامه اجرا و پیغام Welcome to JAVA Tutorials! چاپ می‌شود. در درس‌های آینده توصیه می‌کنیم که اگر می‌خواهید از NotePad و cmd برای اجرای کدها استفاده کنید این خط را از اول هم فایل‌ها حذف و سپس برنامه را کامپایل و اجرا کنید.