آموزش جاوا قسمت سوم :ساختار برنامه نویسی در جاوا

برای ادامه این قسمت شما بایدJDK را بخوبی نصب کرده باشید. وبرای تست نصب JDK برنامه های نمونه ای که در بخش قبل ارائه کردیم اجرا کنید.
حالا وقت شروع برنامه نویسی است. در این بخش موارد زیر را مطرح می کنیم :
- یک برنامه ساده جاوا
- توضیحات
- نوع داده ها
- متغیر ها
- معرفی و مقدار دهی
- رشته ها
- کنترل روند
- آرایه ها

در این بخش مفاهیم پایه برنامه نویسی جاوا مانند داده ها،حلقه ها،رشته ها،.... و نحوه پیاده سازی آنها را خواهیم گفت.
متاسفانه در جاوا بسادگی نمی توانید GUI بسازیم برای اینکار باید کاملا با ساختار اضافه کردن جعبه متن، کلید ها و نحوه پاسخ دادن انها و چیزهای دیگر را بدانیم. تا وقتی که تکنیک های ساخت GUI را توضیح دهیم اجازه دهید که مفاهیم پایه و اولیه جاوا را بگوئیم.
بیشتر برنامه هایی که در این بخش میگوئیم یک خروجی ساده به کنسول می فرستد.( در ویندوزکنسول همان پنجره MS-DOS است).ورودی را برای راحتی کار از یک پنجره pop-up می گیریم.
یک برنامه ساده جاوا :
به ساده ترین برنامه جاوا توجه کنید که چگونه پیغامی را در پنجره کنسول نمایش میدهد:

کد:

public class FirstSample
}
public static void main(String[] args)
}
System.out.println("Hello, World");
{
{

این برنامه کوچک ارزش این را دارد که وقت خود صرفش کنیم برای اینکه در تمام برنامه های دیگر که می نویسیم تکرار خواهد شد.
نکته : قبلا از هر چیزی دوباره این نکته را تکرار کنم "جاوا حساس به متن است" یعنی Main با main فرق میکند خیلی ها موقع نوشتن برنامه در این مورد با مشکل مواجه می شوند.
(در این بخش در مورد کلاسها زیاد صحبت نکردم و بیشتر به اصول و پایه برنامه نویسی پرداختم.)
حالا برویم سرکد برنامه وخط به خط آنرا مرور کنیم : کلمه کلیدی public محدوده دسترسی را تعین میکند.public تعین میکند که آیا بقیه قسمت ها می توانند به این کد دسترسی داشته باشند.کلمه کلیدی class این را بیاد شما می آورد که همه چیز در جاوا درون کلاس ها قرار میگیرد. یک کلاس مثل محفظه ای برای رفتارهای منطقی برنامه است.
کلمه بعد از class نام کلاس است. برای نام گذاری کلاس از قوائد عمومی نام گذاری استفاده میکنیم.(نامها باید با حروف شروع شوند و میتوانند با ترکیبی از حروف و عدد خاتمه پیدا کنند.) اندازه خاصی برای طول نام تعین نشده یعنی شما می توانید طول نام تان هر اندازه ای باشد.
نکته : برای نام ها شما نمی توانید از کلمات کلیدی رزرو شده در جاوا استفاده کنید برای مثال : if ,public
خوب نام این کلاس FristSample است که با حرف بزرگ شده و با ترکیبی از حروف بزرگ و کوچک خاتمه پیداکرده.
باید برای کد برنامه خود باید فایلی همنام کلاس عمومی (public) با پسوند .java بسازیم. برای این برنامه فایل ما بدین نام خواهد بود : FristSample.java ( باز هم تاکید می کنم بزرگ و کوچکی حروف مهم است حتی برای نام فایل) اگر این کار را رعایت نکنید یک اخطار از طرف کمپایلر در یافت خواهید کرد.(public class FristSample میگوید که باید فایلی بانام FristSample.java داشته باشید)
اگر مرحله نام گذاری فیال را صحیح اجام داده باشید وهمچنین خطایی در سورس کد نباشد.کمپایلر جاوا اتوماتیک بایت کد ها در فایلی با همین نام و با پسوند .class در همان دایرکتوری ذخیره میکند."FristSample.class"
در انتها برا ی اجرا بایت کد ها را بدین صورت اجرا میکنید :

کد:

java FristSample

توجه : پسوند .class موقع اجرا نوشته نمی شود.
وقتی برنامه را اجرا میکنیدبسادگی رشته زیر را نمایش می دهد : Hello, World
توجه : اپلت ها ساختاری متفاوت با برنامه بالا دارند که در آینده در مورد انها مفصل توضیح خواهم داد.
وقتی شما از دستور: ] نام کلاس [ java استفاده می کنید.برای اجرای برنامه ، مفسر جاوا از متد main شروع می کند که شما کلاس آنرا نشان داده اید.پس شما باید همیشه متد main را در کلاسی که می خواهید اجرایش کنید داشته باشید.در ضمن شما می توانید متد هایی را خود به کلاس اضافه کنید و در متد main آنها را فراخوانی کنید.
نکته بعدی براکت ها در سورس کد هستند("{}").براکت ها در جاوا مثل c/c++ برای جداکردن قسمت ها برنامه از یک دیگر استفاده میشود که معمولا به هر قسمت بلاک گفته می شود.در جاوا تمام متد ها با براکت باز شروع و با براکت بسته پایان می یابد.
کلمه کلیدی بعدی static void است که تا وقتی که توضیحات کاملی راجه به آن ارائه ارائه دهم فکر کنید که برای اجرای برنامه جاوا به این قسمت نیاز دارد.main هم این را یاد اوری میکند کند که تمام برنامه های اجرایی به متد main نیاز دارند.

کد:

public class  classname
{
public static void main(String[] args)
{
program instruction
}
{

نکته برای برنامه نویسان c++ :
کلاس های جاوا خیلی شبیه به کلاسهای c++ هستنداما تفاوتهایی که بین انهاست احتمال داره شما را به اشتباه بیندازه برای مثال تمامی فانکشنها، متدهای کلاس ها هستند.از این رو متد main باید درون یک کلاس باشد. با static در c/c++ هم آشنا هستید اگر انها را درون کلاس تعریف می کردیم نمی توانستد روی اشیاء کار کنند.اما متد main درون جاوا همیشه static است.
در قسمت بعد براکت ها شروع و پایان بدنه متد را نشان می دهد.این متد فقط یک دستور دارد:
System.out.prinln

در جاوا اکثر دستورات با سیمیکالن(";") پایان می پذیرد.
متد main شمامل دستوری است که یک متن را به خروجی کنسول می فرستد. اینجا از شئ System.out استفاده کردیم و بعد متد println را صدا زدیم و یک رشته به آن پاس داده ایم. این متد پارامتر ی که به ان پاس داده شده را در پنجره کنسول نمایش و خط را پایان میدهد.بعد از هر بار فراخوانی این متد رشته درون یک خط جدید چاپ می شود.مثل c/c++ محدوده رشته با دابل کوتیشن مشخص می شود.
نکته : سینتکس عمومی جاوا برای دست رسی به یک متد بصورت زیر است :
Object.metod(parameters)
متد ها در جاوا مثل فانکشن ها در بقیه زبانها می توانند : هیچ ، یک و بیشتر پارامتر بگیرند.(در بعضی از زبانها به پارامتر آرگومانها هم میگویند).اگر یک متد پارامتر هم نگیرد باز هم باید از پرانتز استفاده کنید.مثلا :System.out.println() یک خط خلی چاپ میکند.
توضیحات در برنامه :
برای اضافه کردن توضیحات در برنامه شما سه روش دارید.
بیشتر افراد معمولا از // برای توضیح گذاری در برنامه استفاده می کنند.این نوع توضیح گذاری با // شروع می شود و تا انتهای خط ادامه می یابد.اگر توضیحی طولانی دارید میتوانید از چند خط همراه با // استفاده کنید و یا از /* و /* برای مشخص کردن محدوده توضیحات استفاده کنید.روش سوم روشی است که برای مستند سازی از آن استفاده می شود که به آن JavaDoc گفته می شود که با /** شروع و با /* پایان می پذیرد. در اینده توضیحات کاملتری راجع به JavaDoc خواهیم داد.

کد:

/*
This is the first sample program
Copyright hotice
*/
public class FirstSample
}
public static void main(String[] args)
}
System.out.println("Hello, World");
{


نوع های داده ها :
در جاوا هر متغیری باید قبل از استفاده باید تعریف شود.(بعضی از زبانهای برنامه نویسی مثل VB این امکان را می دهد که شما بدون تعرف متغیر از آن استفاده کنید). در جاوا هشت نوع اولیه وجود دارد.چهار تا از آنها عدد صحیح دو تا ممیز شناور یکی هم کاراکتر است که برای ذخیره یونی کد از آن استفاده می شود و دیگری برای نشان دادن درست وغلط بودن که boolean گویند.
اعداد صحیح چهار نوع زیر هستند :

کد:

int 4 bytes -2,147,483,648 to 2,147,483,ـ
647 (just over 2 billion) short 2 bytes -32,768 to 32,767 long 8 bytes -9,223,372,036,854,775,ـ
808L to 9,223,372,036,854,775,807L byte 1 byte -128 to 127


نکته : میزان فضای اشغال شده توسط متغیر ها در جاوا برای تمام سیستم ها یکسان است. زبان c/c++ در هر ماشین و در پردازش گرهای متفاوت ، اندازه های متفاوتی برای ذخیره اطلاعات دارند.
اعداد ممیز شناور:
float 4 bytes approximately ±3.40282347E+38F (6–7 significant decimal digits)
double 8 bytes approximately ±1.79769313486231570E+308
نکته : محاسبه ممیز شناور براساس استاندارد IEEE754 است مخصوصاً سه بخش زیر :
- مثبت نامتناهی
- منفی نامتناهی
- NoN (یک عدد نیست)

برای نشان دادن سرریزها(overflow) یا خطا ها کاربرد دارد.مثلا نتیجه تقسیم یک عدد بر صفر مثبت نامتناهی است و یا محاسبه صفر تقسیم بر صفر و یا جذر یک عدد منفی، NoN می شود.برای تست یک عدد که مثلا NoN است یا نه می توانید بصورت زیر آنرا بکار ببرید :

کد:

If (Double.isNon(x))

کاراکتر :
تک کوتیشن ها نشانگر نوع char هستند برای مثال : 'H' یک کاراکتر است و با "H" فرق می کند که یک رشته است.
نوع char نشانگر یک حرف در جدول Unicode است.یونی کد برای مدیریت راحت تر حروف غیر لاتین طراحی شده.یونی کد ، یک کد 2 بایتی است که حروف اصلی تمام زبانها را دارد و اجازه میدهد که 65536 کاراکتر که تا بحال 35000 آن پر شده استفاده کنیم.همچنین بسیار غنی تر نصبت به اجدادش یعنی Ascll که1 بایت بود و 128 حرف داشت و یا ISO 8859-1 با 256 کاراکتر. تمام کاراکتر های مجموعه های بالا زیر مجموعه کاراکتر های یونی کد هستند دقیقا 256 کاراکتر اول جدول یونی کد(که بعضی از برنامه نویسان به آن قسمت لاتین-1 یونی کد میگویند).
یونی کد نه تنها شامل حروف بلکه شامل اعداد و علائم تجاری مثل : @،®یا© نیز هست.جالب توجه که حتی اعداد فارسی و عربی در یونی کد گنجانده شده.
یونی کد بین 0 تا 65535 کارکتر دارد که برای دسترسی به آنها معمولا از کد های هگزا دسیمال استفاده می شود.مثلا برای علامت ™ از 'h2122' استفاده می کنیم توجه کنید که 'hxxxx' ضروری است.برای اطلاعات بیشتر راجع به یونی کد می توانید به سایت www.unicode.org سربزنید.
نوع boolean :
این نوع دارای دو مقدار true و false است که برای تست کردن منطق شرط بکار می رود.
نکته : در c++ برای false از صفر و برای true از مقدار غیر صفر استفاده می شد. اما در جاوا شما نمی توانید از عدد صحیح بجای نوع boolean استفاده کنید.

متغیر ها :
بعد از معرفی نوع داده ها به متغیر ها می رسیم.در جاوا هر متغیری یک نوع دارد برای تعریف متغیر در جاوا بدین صورت عمل می شود که ابتدا نوع متغیر سپس نام متغیر را می نویسیم. به مثال زیر توجه کنید:

کد:

double salary;
int vacationDays;
long earthPopulation;
char yesChar;
boolean done;

به سیمیکالن (";") بعد از معرفی هر متغیر توجه کنید.گذاشتن سیمیکالن بعد از معرفی متغیر لازم است.
نام گذاری متغیر باید با حرف شروع ومی تواند با ترکیبی از حرف و عدد خاتمه یابد.حروفی که برای نام گذاری متغیر می توانید استفاده کنید تمام حروفی است که در جدول یونیکد موجود می باشد.برای اعداد هم همینطور.ما از کاراکتر هایی مثل : ™،®،© نمی توانیم استفاده کنیم.برای طول نام هم محدودیتی نداریم.درضمن از کلمات رزرو شده جاوا نمی توانید استفاده کنید.
نکته : برای اینکه بفهمیم از کدام نام ها می توانیم برای نام گذاری متغیر ها استفاده کنیم از متد های isJavaIdentiferStart و isJavaIdenerpart در کلاس Character می توانیم کمک بگیریم.
چندین متغیر را در یک جا با هم تعریف کرد مثلا : int i,j; که تعریف متغیر بدین صورت را توصیه نمی کنیم اگر متغیر هارا جدا تعریف کنیم خواندن آن راحت تر می شود.
نکته : برای تعریف متغیر ها شما می توانید از حروف بزرگ و کوچک استفاده کنید.مثلا box,Box دو متغیر جدا هستند.
مقدار دهی متغیر ها :
بعد از تعریف متغیر ها می توانید آنها را مقدار دهی کنید.برای مقدار دهی ابتدا نام متغیر بعد علا مت مساوی وبعد مقداری که باید درمتغیر ذخیره شود را می نویسیم:

کد:

int i;
i=123;

در ضمن همانجا بعد از معرفی متغیر هم می توانید آنرا مقدار دهی کنید : char test='A';
هر جایی از برنامه بجز خارج از کلاس می توانید متغیر های خود را تعریف کنید.

ثابت ها :
کلمه کلیدی final نشانگر یک ثابت است.یعنی اینکه یکبار برای همیشه می توانید به آن مقدار بدهید.(معمولا ثابت ها با حروف بزرگ نوشته می شوند) :

کد:

public class Constants
{
public static void main(String[] args)
{
final double CM_PER_INCH = 2.54;
double paperWidth = 8.5;
double paperHeight = 11;
System.out.println("Paper size in centimeter: "+ paperWidth ـ
* CM_PER_INCH + " by "+ paperHeight * CM_PER_INCH); } }


این احتمال وجود دارد که چندین متد بخواهند به یک ثابت دست رسی داشته باشند این ثابت هارا خارج از متد در بدنه کلاس تعریف می کنند که به آنها ثابت کلاس گفته می شود.ثابت های کلاس را معمولا ایستا(static) تعریف می کنند.برای اینکه این نوع از متغیر ها بدون ساخت نمونه ای از شئ قابل دسترسی باشند. وبرای این که بقیه کلاسها به آن دسترسی داشته باشند با دسترسی عمومی (public) تعریف می شود.در ضمن کلمه const که در بعضی از زبانها از آن برای تعریف ثابت استفاده می شد یک کلمه رزرو شده در جاواست.

کد:

public class Constants2
{
public static final double CM_PER_INCH = 2.54;;
public static void main(String[] args)
{
double paperWidth = 8.5;
double paperHeight = 11;
System.out.println("Paper size in centimeter: "+ ـ
paperWidth * CM_PER_INCH + " by "+ paperHeight * CM_PER_INCH); } }



توجه : قسمت هایی مثل عملگر ها،کاهنده ها، افزاینده ها،عملگر های مرتبط و boolean ،عملگر های بیتی، تبدیل بین نوع ها،اولویت عمل گر ها بعلت اینکه به راحتی در کتابهای C++ یافت می شود و همچنین این تاپیک هم داره زیادی طولانی میشه توضیح نمیدم.

توابع و ثابت های ریاضی :
کلاس Math شامل مجموعه ای از توابع و ثابتهای ریاضی است.برای مثال اگر بخواهید ریشه یک عدد را بدست بیاورید از متد sqrt بصورت زیر استفاده می کینم :

کد:

double x = 4;
double y = Math.sqrt(x);
System.out.println(y);

نکته آخر :
یک تفاوت میان متد sqrt و متد println وجود دارد.متد println روی شئ System.out عمل میکند.شئ out از کلاس System معرف دستگاه استاندارد خروجی است که متد println رشته پاس شده را روی آن چاپ می کند.اما متد sqrt از کلاس Math روی شئ کار نمی کند.پارامتری که می گیرد یک عدد است که ریشه آنرا بر می گرداند.متد هایی مثل این را متد استاتیک می گویند.
به بعضی از متد ها وثابت هایی که در کلاس Math وجود دارد توجه کنید :

کد:

Math.sin
Math.cos
Math.tan
Math.atan
Math.atan2
Math.exp
Math.log
Math.PI
Math.E

در قسمت بعد با قیمانده بحث را مورد بررسی قرار می دهیم.

موفق باشید. :)

آموزش جاوا قسمت دوم : محیط برنامه نویسی جاوا

باسلام:

درقسمت گذشته مقدمه ای بر زبان جاوا داشتیم. گفتیم که مایکروسافت هم ابزار برنامه نویسی بانام J++ داشت که برای مدت طولانی آن را پشتیبانی نکرد وهمچنین تفاوت های آنرا با جاوا گفتیم. درآخرهم برتری ها ومزیای آن(جاوا) را بیان کردیم.
سعی می کنم دراین بخش مباحث زیر را توضیح دهیم.
- نصب کیت توسعه نرم افزاریا Java SDK (JDK)
- محیط های توسعه
- استفاده ا ز خط فرمان
- استفاده ا ز یک I DE
- کمپایل واجرا کردن یک برنامه با استفاده ا زیک ویرا یشگر متنی
- برنامه های گرافیکی
- اپلیت ها
دراین بخش یاد می گیریم که چگونه کیت توسعه نرم افزارجاوا((Java SDK را نصب کنیم.وهمچنین چگونه انواع مختلفی از برنامه ها را مثل: کنسول،گرافیکی و اپلیت هارا کمپایل واجرا کنیم.شما می توانید ابزار های SDK را با تایپ کرده درخط فرمان اجرا کنید.هرچند خیلی از برنامه نویسان ترجیح می دهند که برای راحتی از یکIDE استفاده کنند.
محیط های زیادی برای توسعه برنامه جاوا وجود دارند با رابط های مشابه که به آسانی می توانیدآنها را یادبگیرید.
بعضی ازIDE ها زمان زیادی را برای بار کردن ریسورسها و فایل های کتابخانه ای نیاز دارند وهمین امر برای بعضی ها نا خوشایند است. برای این دسته از افراد و کسانی که میخواهند برنامه های کوچک بنویسند ونیازی به امکانات IDEهای سنگین ندارند میتوانند مثل برنامه نویسان قدیمی از ویرایشگرمتنی استفاده کنید(البته نه به آن زمختی).
نصب کیت توسعه جاوا:
نگارشهای متعددی از(Java SDK) وجود دارد که برای پلت فرم های مختلف تدارک دیده شده اند. ما فقط در مورد نصب SDK در ویندوزولینوکس خواهیم گفت. برای نصب در پلت فرم های دیگر می توانید به دستور العمل نصب مخصوص خود آن پلت فرم مراجعه کنید.
نکته : فقط دستورالعمل نصب جاوا برای سیستم عامل های مختلف باهم فرق می کند. وقتی که شماجاوا رانصب واجرا کردید تمام چیزهایی که دراین درس ها خواهیم گفت می توانید اجرا کنید.مستقل از سیستم بودن جاوا بزرگترین مزیت آن است.

روند نصب در ویندوز بسیار ساده است برای نصب در ویندوز فایل اجرایی نصب را اجرا کنید. بقیه کارها مثل نصب یک برنامه ساده می باشد وبرای نصب درلینوکس می توانیید فایلReadMe درفایل فشردهtar . رامطالعه کنید.
تنظیم مسیر اجرایی:
بعد ازاینکه JDK را نصب کردید احتیاج به انجام مرحله اضافی دیگری دارید. اضافه کردن پوشهjdk/ bin به
مسیر اجرایی.
درویندوز(NT,2000,XP) درکنترل پنل روی System کلیک میکنیم وسپس پنل Advanced را انتخاب و سپسEnvironment Variables را کلیک میکنیم ودربین متغیرهای کاربر(User variables) متغیر با نام PATH را خواهید دید دایرکتوری jdk/bin رابه آن اضافه کنید.اگرjdk5 استفاده می کنید احتمالا پوشه:Program FilesJavajdk1.5.0in را درویندوز پیدا خواهید کرد. این همان مسیری هست که باید اضافه کرد.

درلینوکس بستگی بهshellی که استفاده می کنید مرحله اضافه کردن مسیر فرق می کند.که اگرازC Shell استفاده می کنید .خط زیر را به آخرفایلcshrc./~ اضافه کنید.
set path=(/usr/local/jdk/bin $path)
واگرازBourn Again shell استفاده میکنید خط زیر را به آخرفایلbashr./~ یاbash- profile./~ اضافه کنید
export PATH=/usr/local/jdk/bin:$PATH
وسپس برای مطمئن شدن مراحل قبل دستورjava-version رادر خط فرمان تایپ کنید.اگر پیغام خطا دید. باید مراحل قبل را دوباره چک کنید.در غیر این صورت باید پیغامی شبیه زیرببینید.

کد:

Java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition
Java HotSpot(TM) Client VM


نصب سورس کتابخانه های جاوا ومستندات آن
سورس کتابخانه های جاوا بصورت یک فایل فشرده است و شما باید آنرا از حالت فشرده بیرون بیاورید.( شدیداً توصیه می کنم که این کار ساده را انجام دهید.) نام فایل فشرده src.zip هست که درپوشه JDK قرار دارد.
1. مطمئن شوید که jdk به صورتی که قبلاً ذکر شد صحیح نصب شده است .
2. وراد خط فرمان شوید (shell در لینوکس . Ms Dos mode در ویندوز )
3. دایرکتوری جاری را به دایرکتوری jdk تغییر دهید ( usr/local/jdk / یاprogram file javajdk )
4. دستور زیر را کنید . jar xvf scr.zip

نکته : فایل src.zip شامل سورس که تمامی کتابخانه های عمومی جاوا است . برای اینکه به منابع بیشتری دسترسی داشته باشید در مورد کامپایلر ، ماشین مجازی ، متدهای بومی(native) و راهنمای اختصاصی کلاسها به آدرس زیر بروید :
http:// www.sun.com/software/communitysource/

و حالا نوبت مستندات(Documentation) جاوا رسید. مستندات جاوا یک فایل فشرده است که ازjava sdk جداست . فایل مستندات(Documentation) معمولاً به صورت زیر نامگذاری شده است . jdk version-doc.zip که منظور از version نگارش فایل مستتند می باشد . مثلاً برای jdk5 به صورت زیر است java -1-5-0-doc.zip این فایل را هم می توانید به همان صورتی که فایل سورس کتابخانه را باز کردید از حالت فشرده بیرون بیاورید .
1. مطمئن باشید jdk را صحیح نصب کرده اید .
2. وارد خط فرمان شوید (shell در لینوکس و ms-dos mode در ویندوز )
3. دایرکتوری جاری را به دایرکتوری jdk تغییر دهید ( jdk / local / user یاprogram file java jdk )
4. فایل مستندات را درون پوشه jdk کپی کنید .
5. دستور زیر را اجرا کنید

کد:

Jar xvf jdk version-doc.zip

خوب حالا این مستندات و سورس فایلهای کتابخانه ای جاوا به چه درد می خورد که نصب کردیم .
با مرور سورس فایلهای جاوا شما می توانید به سورس کد کلاسهای عمومی جاوا دسترسی داشته باشید. مثلا برای پکیج
java.lang.system باید به پوشهjava/long/system مراجعه کنید.
مستندات کتابخانه جاوا هم بصورت فایلهای HTML می باشد.که می توانید نحوه عملکرد متدوکلاس های جاوا رادر آن پیدا کنید.
محیط های توسعه
اگر شما تجربه برنامه نویسی در VBیاVC ویاDelphi را داشته باشید. به IDEهایی که خود بعضی از کدهای اصل را می نویسد ،کمپایل توسط منو انجام می گیرد، دیباگر درونی دارد که به محض اشتباه کردن آن را به شما نشان
می دهد عادت کرده اید. خود JDK بطور ذاتی شامل هیچ یک از چیزهای بالا نمی شود تمام چیزها با تایپ در خط فرمان انجام می گیرد.
نترسید چون ما فقط در حد یادگیری از خط فرمان استفاده می کنیم. و بقیه کارها را با IDE انجام می دهیم.IDEها برای برنامه نویسان مبتدی سخت هستند. برای اینکه آهسته بوده و نیازمند کامپیوترهای قدرتمندی هستند ومعمولا نیاز به کمی تنظیمات برای هر پروه ای که می خواهید بنویسید دارد.
یکی از مزایای(بعضی از) IDEها سورس فایلها ی همراه انهاست که برنامه نویسان می توانند از آنها استفاده کنند.همچنین در این محیط ها دیباگرهای قدرتمندی وجود دارد که شما را در نوشتن برنامه بسیار کمک می کنند.
سطح میانی بین ابزارهای خط فرمان وIDE ها ادیتورهایی هستند که دارای همخوانی و تلفیق با جاوا هستند.استفاده ازاین ادیتورها باعث می شود که نوشتن برنامه ها ساده و سریع شوند. در لینوکس شما می توانید ازemacs استفاده کنید در ویندوز هم می توانید از TEXTPAD استفاده کنید.(البته TEXTPAD یک برنامه نیمه رایگان است) در مجموع شما سه گزینه برای انتخاب محیط های توسعه دارید.
1- استفاده از ویرایشگرمتنی که مورد علاقه شماست و کمپایل و اجرای آن از طریق خط فرمان
2- استفاده از ادیتورهایی که قابلیت همخوانی با جاوا را دارند که می توانند برای کمپایل و اجرا از خود این برنامه ها استفاده کنید.
3- استفاده از یک IDE مانند eclipse یا بقیه IDEها که مجانی و یا پولی هستند.


استفاده از ابزارهای خط فرمان
شما دو راه برای کمپایل و اجرای برنامه دارید استفاده از خط فرمان یا استفاده (ازIDE یا ادیتورهمخوان با جاوا) که ابتدا از راه سخت استفاده می کنیم:از خط فرمان.
برنامه زیر را درون یک ادیتور مثلNotepad یا هر برنامه دیگر وارد کنید و سپس آن را بانام welcome. java ذخیره کنید. توجه کنید که بزرگی و کوچکی حروف برنامه رعایت شود و همچنین بزرگی و کوچکی نام فایل , سپس وارد خط فرمان شود(shell لینوکس یا MS-DOS mod ویندوز) وارد پوشه ای که فایل وجود دارد شوید. سپس دستورات زیر یکی یکی اجرا کنید:

کد:

Javac welcome.java
Java welcome

به شما تبریک می گویم اولین برنامه خود را نوشتیم و اجرا کردیم.
چه اتفاقی افتاد؟ با استفاده از دستور Javac فایل welcome.java را کمپایل کرده و یک فایل welcome.class ساخته شد و دستور java بایت کدها ی فایل class را اجرا کرد.
برنامه welcome بسیارساده بود در بخشهای بعدی خواهیم گفت که این برنامه چگونه کار می کند.

کد:

public class Welcome
{
public static void main(String[] args)
{
String[] greeting = new String[3];
greeting[0] = "Welcome to First Java Application";
greeting[1] = "by Hotice";
greeting[2] = "Publish by www.barnamenevis.org";

System.out.println(greeting[i]);
}
}


اشاره به خطاهای احتمالی:
در عصر محیط های توسعه ویژال خیلی از برنامه نویسان با اجرای برنامه ها در خط فرمان نا آشنا هستند.
توجه به نکات زیر ضروری است:
0اگر برنامه را دستی می نویسید توجه به حرف بزرگ و کوچک ضروری است. اسم کلاس welcome است نه Welcome یا WELCOME
0کمپایلر نام فایل همنام با کلاس را می شناسد با پسوند java(welcome.java) و نام کلاس بدون پسوند java یا class می باشد
0اگر شما با پیغام"Bad command or file name" یا "Javac:command Not found" باید دوباره نصب JDK و تنظیمات پوشه اجرایی را چک کنید.
0اگر با پیغام"cann't read:welcome.java"مواجه شدید. مطمئن شوید که فایل در همین دایرکتوری قرار دارد.
توجه:در ویندوز بعضی از ویرایشگرهای متنی مثل notpade بعد از ذخیره فایل پسوندی مثل txt را به فایل اضافه می کنند(welcome.java.txt) می توانید از دستور Dir برای چک کردن داخل دایرکتوری استفاده کنید. از explorer ویندوز استفاده نکنید به علت این که در تنظیمات پیش فرض ویندوز پسوند را مخفی می کند. برای تغییر نام می توانید از دستور ren استفاده کنید.
•اگرjava اشکال با عنوان lang.NoClassDefFoundErrorرا گزارش داد.دوباره نام کلاس را چک کنید.
•جاوا به حروف بزرگ وکوچک حساس است.
•اگر در موقع اجراکردن باپیغامی مثل welcome/javaروبروشدید باید پسوند java.را بردارید.
•اگر برنامه شما اشکالات زیادی داشت.وبه سرعت درصفحه بالا رفت وشما نتوانستید ببینیدjava این امکان را به شما می دهد که اشکالات رادرون یک فایل متنی ذخیره کنید.با استفاده از2> می توانید اشکالات رااز صفحه نمایش تغییر مسیر دهید به یک فایل. مثال : زیر توجه کنیدjava myprog 2> errors.TXT

استفاده از یک IDE
تصاویری از eclipse IDE


و این هم تصویر دیگر



در این قسمت به شما می گویم که چگونه یک برنامه رابا یک IDE مجانی بنویسید و کمپایل واجرا کنید.وآن edipse است می توانید با مراجعه به این سایت آن رادانلود کنید. www.eccipse.org
یک فایل فشرده است که می توانید با برنامه winzip یاwin rar آن را باز کنید.
در هر کجا دوستدارید می توانید آن را کپی کنید.
با اجرای eclipse.exe صفحه splash screen ظاهرمی شود وبعد ازآن صفحه workspace launcher می آید
این صفحه به شما می گوید پوشه که می خواهید پروژها در آن ذخیره شود انتخاب کنید . با تیک زدن چک باکس پائین از آمدن دوباره این پنجره جلوگیری کنید.
در اولین اجرا صفحه welcome را می بینید.از آموزشهایی که دراین صفحه است استفاده کنید.
با کلید روی علامت فلش بالا سمت راست دکمهworkbench به صحفه اصل می روید. برای اینکه صفحه را برای توسعه برنامه جاوا آماده کنید از منوی windows > open perspective > java را انتخاب کنید.
درسمت چپ package explorer می بینید .پروژهpackage فایل ها ،کلاس ها،متد ها و000 را ببینید.
با استفاده از فایل File ->New پروژه جدیدی ایجاد کنید. ابتدا نام پروژه را welcome بگذارید وسپس Finish
را کلیک کنید.
درPackage Explorer روی welcome کلیک راست کنید.از منوی new -> class را برگزینید.نام کلاس را همان welcome بگذارید و مطمئن شوید که public static void main، public علامت دار باشد.بقیه گزینه ها همانطور که هست باقی بگذارید و دکمه finish راکلیک کنید.کلاس و متد را IDE برای شما آماده میکند. سورس بالا را جای سورس موجود در IDE وارد کنید.
برای اجرای برنامه فلش سبز رنگ موجود درنوار ابزار را کلیک کنید و یا از منوی Run->Run as->Java Application را انتخاب کنید.صفحه ای با عنوان Save Source بمنظور ذخیره سازی فایل هایی که شما تغیرشان دادید نمایان میشود.OK را کلیک کنید.(اگر پنجره ای با عنوان Run آمد new و سپس Run را کلیک کنید.)

این مقدمه ای بود بر IDE بسیار قدرت مند eclipse .در اینده راجع آن بیشتر خواهم گفت.

کمپایل و جرای برنامه از یک ویرایش گرمتنی مثل Emacs



در این بخش میخواستم دو ادیتور را معرفی کنم(Textpad و emacs) اما بعلت پولی بودن اولی وقوی تر بودن دومی و طولانی شدن این تاپیک فقط یکی را Emacs را معرفی می کنم.
یک IDE علاوه بر انکه دارای مزایای زیادی است معایبی هم دارد. بخصوص برای برنامه های ساده که روی چندین فایل توزیع نشده است.
Emacs را میتوانید از اینجا بگیرید www.gnu.org/software/emacs/ .
Emacs ادیتور را به دو قسمت تقسیم میکند.فسمت بالا قسمت تایپ برنامه است و پائین دیدن اشکالات .
وقتی در قسمت پائین روی Error کلید Enter را میزنید کرسربه محل اشکال در قسمت بالا پرش می کند.
برای اجرا از منوی JDK->Run استفاده کنید.

برنامه های گرافیکی
برنامه welcome فقط یک مثال ساده بود.اجازه دهید برنامه جالب تری اجرا کنیم.
برنامه زیر را درون فایل ImageViewer.java ذخیره کنید و مثل مثال بالا کمپایل و اجرا کنید.

کد:

javac ImageViewer.java
java ImageViewer


یک برنامه ساده برای نمایش فایل .Gif

کد:

import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import javax.swing.*;

public class ImageViewer
{
public static void main(String[] args)
{
JFrame frame = new ImageViewerFrame();
frame.setTitle("ImageViewer");
frame.setSize(300, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS  E);
frame.show();
}
}

class ImageViewerFrame extends JFrame
{
public ImageViewerFrame()
      {
       // set up menu bar
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu menu = new JMenu("File");
menuBar.add(menu);
JMenuItem openItem = new JMenuItem("Open");
menu.add(openItem);
openItem.addActionListener(new FileOpenListener());
JMenuItem exitItem = new JMenuItem("Exit");
menu.add(exitItem);
exitItem.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
// use a label to display the images
label = new JLabel();
Container contentPane = getContentPane();
contentPane.add(label, "Center");
}

 private class FileOpenListener implements ActionListener
{
 public void actionPerformed(ActionEvent evt)
 {
// set up file chooser
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));

 // accept all files ending with .gif
 chooser.setFileFilter(new
 javax.swing.filechooser.FileFilter()
 {
 public boolean accept(File f)
 {
 return f.getName().toLowerCase()
.endsWith(".gif")
 || f.isDirectory();
 }
 public String getDescription()
 {
 return "GIF Images";
 }
 });

 // show file chooser dialog
 int r = chooser.showOpenDialog(ImageViewerFrame.this);

 // if image file accepted, set it as icon of the label
 if(r == JFileChooser.APPROVE_OPTION)
 {
 String name
 = chooser.getSelectedFile().getPath();
 label.setIcon(new ImageIcon(name));
 }
 }
 }

 private JLabel label;
 }

اپلت ها
دوبرنامه بالا برنامه به اصطلاح ایستا بود مثل بقیه برنامه های native compile .دسته دیگر از برنامه ها که در اینده بیشتر به آن خواهیم پرداخت اپلت ها هستند که درون مرور گرهای وب اجرا میشوند.
سورس کد زیر را درون فایلی با نام WelcomeApplet.java ذخیره کنید.

کد:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;

public class WelcomeApplet extends JApplet
{
public void init()
{
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());

 JLabel label = new JLabel(getParameter("greeting"),
 SwingConstants.CENTER);
 label.setFont(new Font("TimesRoman", Font.BOLD, 18));
 contentPane.add(label, "Center");

 JPanel panel = new JPanel();

 JButton cayButton = new JButton("Barname Nevis");
 cayButton.addActionListener(getURLActionListener
 ("http://www.barnamenevis.org"));
 panel.add(cayButton);

 JButton garyButton = new JButton("Hotice ");
 garyButton.addActionListener(getURLActionListener
 ("mailto:creativeperson_ir@yahoo.com"));
 panel.add(garyButton);

 contentPane.add(panel, "South");
 }

 public ActionListener getURLActionListener(final String
 urlString)
 {
 return new
 ActionListener()
 {
 public void actionPerformed(ActionEvent evt)
 {
 try
 {
URL u = new URL(urlString);
 getAppletContext().showDocument(u);
}
catch(Exception e) { e.printStackTrace(); }
}
};
}
}

فایل Html دیگری(هرچند نام آن فرق نمی کند ولی ما نام آنرا WelcomeApplet.html) در همان مسیربسازید و تگ زیر را به آن اضافه کنید:

کد:



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

javac WelcomeApplet.java
appletviewer WelcomeApplet.html


خوب این هم از این بخش . تا آینده ای نزدیک موفق باشید.

آموزش جاوا قسمت اول : مقدمه ای بر جاوا

با سلام
مقدمه:
بعد از مدت ها که تصمیم گرفته بودم نوشته های خودم رو از سایت برنامه نویس به وب لاگ شخصی خودم منتقل کنم.نوشته های من تحت نام HOTICE  بود.
متاسفانه بعلت ناشناخته ماندن وتاکمی مبهم بودن این زبان حتی برای برنامه نویسان در حد متوسط گرایش به این زبان در کشور مابسیار کم رنگ می باشد.و علت دیگر شاید نداشتن یک IDE یکتا وثابت برای این زبان است( اگر کمی وقت در اینترنت صرف یافتن IDE برای جاوا کنیدبه گزینه های زیادی برمی خورید Eclipse , Websphere , JDeveloper , Netbeans , Intelli.... که خو گرفتم با هریک حتی برای برنامه نویسان حرفه ای وقت لازم دارد ."البته به نظر من این یک قوت است"). من در این نوشتار قصد ندارم برتری جاوا بر بقیه زبانها را بگویم ویا تفاوت .NET با J2EE را بیان کنم بلکه آموزشی در حد مقدماتی بر این زبان خواهیم داشت.
بحث ونوشته هایی که در این تاپیک و تاپیک های آینده مطرح وارائه می شود حاصل و برگرفته از :
- ترجمه بخشهایی از کتاب Core Java
- کتب و مقالات موجود در اینترنت و مجلات
- Java Doc
- و تجربه و معلومات شخصی بنده
( هر کدام از مباحثی که حاصل تجربیات شخصی اینجانب است قابل نقد ، بحث و رد میباشد)
همچنین در این مقالات قصد دارم که IDE بسیار قدرتمند Eclipse را مورد استفاده قرار دهیم که به موقع و بین دروس به آن خواهیم پرداخت.
توجه : پروژه ها ومثالهایی که اجرا خواهیم کرد احتیاج به هیچ IDE ندارد ،شما میتوانید حتی با Notepade هم آنهارا بنویسید. اما برای راحتی کار واشنایی با یک IDE قدرتمند توصیه میشود از Eclipse استفاده کنید.
خوب برای شروع به چه چیزهایی نیاز داریم :
- دانشی از برنامه نویسی ( هرچند مقالات به گونه ای خواهد بود که افراد نا آشنا با برنامه نویسی قدم به قدم اصول برنامه نویسی را فرا خواهند گرفت. اما دانستن اصول برنامه نویسی بد نیست مخصوصاً اشنایی با syntax های C عالی خواهد بود )
- Java SDK
- یک کامپیوتر (سیستم عامل فرق نمی کند)
- Eclipse IDE (واجب نیست ، مستحب است)
نکته : بعلت مسائل کاری من هرروز نمیتوانم به پای کامپیوتر بروم.اگر سوالی مطرح کردید و جواب آنرا از طرف بنده دیر به دستتان رسید پیشاپیش عذر خواهی میکنم.
سرفصل های دروس بیشتر بر اساس کتاب Core Java خواهد بود و شاید گریزهایی به خارج از آن زدیم. سرفصل ها شامل : مقدمه ای برجاوا ، محیط برنامه نویسی جاوا ، ساختار پایه برنامه نویسی در جاوا ، شیء گرایی ، وراست ، کلاسهای درونی و اینتر فیس ، برنامه نویسی گرافیکی ، مدیریت رویداد و..... خواهد بود.

و اینک : بسم الله الرحمن الرحیم
مقدمه ای بر جاوا
برای اکثر کسانی که فقط نامی از جاوا شنیده اند(البته در ایران) ویا در حد خیلی ابتدایی با جاوا کار کرده باشند جاوا مترادف است با : برنامه نویسی شبکه ، اجرای خیلی کند ، خیلی سخت ، غیر قابل فهم ، کم طرفدار در ایران ، بدون رابط کاربر، برنامه نویسی کنسولی و...... آیا واقعا چنین است ؟؟
قبل از توضیح دادن بعضی ازآنها به تاپیک هایی که در همین بخش با عنوان " کار های برزرگ با جاوا"،"یک بازی سه بعدی با جاوا"،"نوشتن سیستم عامل باجاوا" مراجعه کنید و یا می توانید خودتان در اینترنت به جستجو بپردازید.اما بعضی از این حرف ها هم شاید رد کردن آن چندان کار درستی نباشد.
- برنامه نوسی شبکه : مطمئناً یکی از بازوهای قدرت مند جاوا است.
- اجرای خیلی کند : در مقایسه با برنامه های native compile تقریبا درست است. البته بخاطر ویژگی وساختار زبان جاواست.در ضمن تفاوت آن چندان محصوص نیست.
- خیلی سخت : موافق نیستم ، شاید برای افراد راحت طلب درست باشد.
- غیر قابل فهم : شاید برای برنامه نویسان روال گرا (procedure oriented) وغیر اشنا با OOP(برنامه نویسی شیء گرا) کمی درفهم آن مشکل داشته باشند.
- کم طرفدار در ایران : بخاطر ناشناخته ماندن آن.
- بدون رابط کاربر : اگر منظورشان IDE باشد که بیشتر از انگشتان دستتان IDE وجود دارد. و اگر منظورشان ساخت GUI برای برنامه ها باشد که حرف کاملا غلطی است. رجوع کنید به اینترنت یا تاپیک "کارهای بزرگ با جاوا". در بخش گرافیک و رابط کار بر توضیح خواهم داد.

و قص الی هذا ...........
"جاوا فردا بهتر از امروز خواهد بود". شاید این یک شعار دهن پر کن بنظر برسد اما با نگاهی به روند تکامل آن گویای این مطلب خواهد بود که جمله فوق چندان هم یک شعار نیست. سوالی که شاید در ذهنتان باشد این است که :
"این بهبود ها از کجا آمده است؟" . از تغیر در ساختار وزیر بنای جاوا نبوده بلکه قسمت اعظم آن تغیر در کتابخانه های جاوا بوده. به مرور زمان سان مایکروسیستمز خیلی از توابع کتابخانه ای جاوا را تغیر داد (برای سازگاری بیشتر)، تغیر در مدل گرافیکی با تغیر مدل رویداد و بازنویسی قسمت هایی از آن و هم چنین اضافه کردن ویژگی های مهمی مثل پرینت گرفتن که در نگارش های اولیه دیده نمی شد.نتیجه این تغیرات پلتفرم برنامه نویسی بسیار مفیدی با قابلیت های زیاد در ورژن های بعد بود.
نکته :
مایکروسافت هم محصولی بانام J++ بیرون داده بود که مشترکاتی با خانواده جاوا داشت.J++ دارای مفسری سازگار با ماشین مجازی جاوا برای اجرای بایت کد های جاوا بود.اما تفاوت اصلی در بخش interface و رابط کاربرآن بود. پایه دستورات تقریبا با جاوا برابر بود. مایکروسافت ابزار های مشکوکی در بخش interfacing و رابط کاربر آن اضافه کرده بود.منظورم استفاده از API های ویندوز بود.(( نظر من این است که : این کار مایکروسافت ترفندی برای لوکالیزیشن کردن برنامه ها بود. یا همان انحصاری کردن برنامه ها برای ویندوز.با این کار قابلیت حمل پذیری جاوا از بین می رفت. وشاید ترفندی برای زمینه سازی .NET . که جای بحث دارد)) در کل جاوا و J++ اشتراکات زیادی زیادی در توابع کتابخانه ای شان داشتند مثلاً : string, utilities, networking, multithreading, math و غیره که واقعاً برابر بودند. مایکروسافت برای مدت طولانی پشتیبانی از J++ را ادامه نداد بلکه پلتفرم وزبان جدیدی را معرفی کرد که بسیار شبیه به جاوا بود وآن .NET و C# بود.
برتری های جاوا :
- اولین برتری جاوا محیط اجرایی یا همون runtime environment آن است. که پلتفرم مستقلی را فراهم می کند که شما می توانید یک کد را روی ویندوز،لینوکس،مکینتاژ و.... اجرا کنید.این قابلیت وقتی مورد توجه قرار می گیرد که شما برنامه ای را روی پلتفرم های متفاوتی از اینترنت دانلود کنید.
- برتری دیگر آن سینتکس شبیه به C++ آن بوده. که ساخت برنامه ها را برای برنامه نویسان C/C++ آسان میکند.
- همچنین جاوا یک زبان برنامه نویسی کاملا شئ گرا می باشد حتی بیشتر از C++.تمام چیز ها در جاوا بجز تایپ های اولیه مثل اعداد همگی اشیاء هستند.

قسمت پایانی :
یکی از حضار از "استفان ویلد استروم" نویسنده بیزنیس ویک در کنفرانس CeBIT نیویورک می پرسد :
فکر میکنید کدام زبان برنامه نویسی در چند سال آینده بر سایر زبانها غالب خواهد بود ؟
فکر کنم دو زبان برنامه نویسی عمده همچنان C++ و جاوا باقی بمانند.البته گرایشی به سمت C# هم وجود دارد که با جا افتادن دات نت وکاربرد بیشتر آن این گرایش قوی تر خواهد شد.اما هنوز فکر می کنم C++ و جاوا زبانهای برنامه نویسی اصلی باقی بمانند.(ر.ک. : نشریه عصر ارتباط شنبه 12 دی 83)

خوب تا اینجا برای مقدمه فکر میکنم کافی باشد.در ضمن من خواننده انتقادات و پیش نهادات شما خواهم بود.

موفق باشید. :)