6.7 لغة البرمجة جافا | كتاب لينكس الشامل | >> |
جافا هي لغة قياسية (يوجد معايير صارمة تحكمها) وكأي مقاييس يوجد عدة إصدارات من عدة شركات ومنظمات شأنها في ذلك شأن سي ما يكتب في أحدها يعمل في كل الباقية. وكأي لغة تفسيرية الهدف منها هو أن تكتب البرنامج مرة واحدة وتنفذه أينما شئت "write once run every where" ولكنها تختلف عن اللغات التفسيرية السابقة أنها لا تسمى script أي لا تنفذ كما هي مباشرة وهي على شكل نص بل يجب القيام بعملية تصنيف أولية لعمل ملف ثنائي byte code يوفر المزيد من السرعة مقارنة بالملفات النصية في اللغات الأخرى. وكأي لغة تفسيرية أخرى يعيبها انخفاض الأداء(السرعة) إلى حد كبير لأن هذا الملف المصنف ليس بلغة الآلة (الحقيقية) بل بلغة الآلة الافتراضية التي يحاكيها مفسر اللغة.
توفر gnu أداة gcj لتصنيف ملفات جافا وتحويلها لملف تنفيذي حقيقي بلغة الآلة وليس byte code مما يجعلها تقترب من أداء لغة السي إلى حد جيد.
قبل الحصول على جافا أولا عليك اختيار أيها تريد هناك جافا من واضعي جافا أي شركة sun وتسمى j2sdk يمكنك تنزيلها من موقعهم http://java.sun.com/linux أو من الأقراص المرفقة مع الكتب ، وهناك جافا من منظمة جنو المعروفة gnu-java (اسم الحزمة هو gcc-java) وتأتي هذه مع معظم التوزيعات تقوم بتركيبها كما تفعل مع أي حزمة أخرى، وفي ماندريك هناك واحدة أخرى هي kaffe وهي ليست coffe الأخيرة من شركة symantec. هناك الكثير من الحزم ذات الصلة مثل j2re (للمتصفحات حتى تتمكن من عرض applets) ant و jaf و tomcat (من أجل apache) و servletapi و struts و ejb وغيرها الكثير
إذا كنت ستستعمل j2sdk قم بتركيبها في مجلد معين
مثلاً في مجلد j2sdk داخل الدليل البيت
ولكن إذا أردت أن يستعملها كل المستخدمين
اختر المجلد /opt/j2sdk
وأنت جذر
ثم أضف المجلدbin
في حالتنا الأخيرة
/opt/j2sdk/bin
إلى متغير المسارات
PATH
وذلك بكتابة وأنت جذر
bash# PATH=$PATH:/opt/j2sdk/bin bash# echo "PATH=$PATH:/opt/j2sdk/bin" >> /etc/profile
من بين برامج جنو العظيمة هناك واحد آخر يهمك
هو gcj
فهو يتجاوز عيب
جافا الأكبر وهو قلة السرعة وذلك بأنه يصنف برنامج
java إلى لغة الآلة الحقيقية!! فتحصل على أداء حقيقي.
نعم ستحصل على برنامج تنفيذي يقترب من قوة سي
(ولا يصل إليها).
فتستفيد جافا من مزايا اللغات التصنيفية والتفسيرية.
العيب الوحيد له هو أنه لم يكتمل ولكنه يعمل.
تجده غالباً مع أقراص توزيعتك.
في أي محرر نصي اكتب اكتب البرنامج التالي
وخزنه باسم hello.java
/* * Hello.java: traditional "Hello, world!" console program * */ class Hello { public static void main(String[] args) { System.out.println("Hello, world!"); } }
bash$ javac hello.java bash$ java hello Hello, World.
hello.java
لملف ثنائي byte code
اسمه hello.Class
السطر الثاني قمنا بتنفيذ البرنامج الذي كتبنها
باستدعاء الآلة الافتراضية على ملف hello.Class
لاحظ أنك لا تكتب .Class
عند استدعاء الآلة الافتراضية.
(وفي لينكس يمكنك أن تكتفي بتنفيذ البرنامج ./hello.Class
)
لغة جافا قريبة من لغة سي++ لدرجة كبيرة
حيث تشترك معها في أغلب الكلمات المفتاحية
والصيغة syntax وتختلف في الوظائف المكتبية اختلافاً جذرياً.
لاحظ في المثال السابق استعمال /* */
للإحاطة بالتعليقات
كما ويجوز استعمال //
لتسبق التعليقات إلى نهاية السطر،
والحاصرة { }
للإحاطة بوحدة من الكود
الخاص بالوظائف واستعمال الأقواس المربعة [ ]
للتحديد عنصر من منظومة
.والفاصلة المنقوطة بعد كل تعليمة تنفيذية
وكما قلنا لغة جافا لغة كينونية صرفة
لذا لن نجد وظيفة main
بل نعرفة صنف class
يحتوي هذه الوظيفة ويجب أن تكون عامة لأنها ستستدعى
عند تنفيذ البرنامج من خارج الصنف
في الغالب يكون اسم الصنف على اسم الملف
كما تلاحظ لا يوجد وظائف دون كائنات حتى تلك
التي تطبع سطر println
أي print line فهي
عضو من الكائن out
الذي هو عضو من
System
/* * CLike.java: Java is a C/C++ like language * */ class CLike{ public static void main(String[] args) { int i,j; float a=0.0; System.out.println("Welcome to Java"); for (i=0,j=0;i<10;++i) { j+=i; System.out.println(i); } System.out.println("sum(1..10)=",j); } }
X.Y
أي الفرع Y
من الأصل X
نستطيع تحميل هذه الحزم ب import
ثم اسم الحزمة ويمكنك تحميل كل الحزم المتفرعة
بوضع * مكان الفروع مثلاً import java.applet.*;
import java.awt.*; import java.applet.*; public class WindowTestApplet { public void init() { int a; float f; char c; Frame Win1=new Frame("MyWinTitle"); Win1.setSize(255,255); Win1.add(new TextArea(10,10),"Center"); Buttton b=new Button("MyButtonLabel"); Win1.add(b); Chioce c=new Choice(); c.addItem("Item Number One"); c.addItem("Item Number Two"); Win1.add(c); Win1.show(true); } }
<< السابق | كتاب لينكس الشامل | التالي >> |