25
فبراير

البداية مع JAVA : الجزء الأول

هناك العديد من المقالات والدروس التي تتطرّق إلى لغة PHP من منظور مبرمجي JAVA (لا يخفى عليكم أن PHP أقتبست العديد من عبارات JAVA البرمجية).

في هذه السلسة من الدروس سأبدأ معكم رحلة “تعليم لغة البرمجة JAVA من منظور مبرمجي PHP“.

تتطلب منك هذه السلسلة معرفة أساسيات لغة PHP.

سنقوم في هذه السلسلة بالتطرّق إلى لغة JAVA الإصدار القياسي Standard Edition ثم ننتقل لتطوير تطبيقات Android باستخدام JAVA.

إذاً لنبدأ…

ما هي لغة JAVA؟

باختصار شديد: لغة JAVA هي لغة برمجة (Programming Language) متعدّدة الأغراض (Multi-purpose) ظهرت في بداية عام 1996 من شركة Sun Microsystems (اشترتها شركة Oracle) بواسطة James Gosling.

James Gosling مخترع JAVA

المقصود بـ (متعددة الأغراض) هو إمكانية بناء تطبيقات لأجهزة عديدة كأجهزة الكمبيوتر (بمختلف أنظمة التشغيل) وأجهزة الجوال (Mobile Devices) والبطاقات الذكية (Smart Cards) وحتّى صفحات الإنترنت (Web Pages).

لمزيد من المعلومات عن JAVA:

ما قبل العام 1998 لم تكن لغة JAVA سوى لغة برمجة حديثة العهد، احتوت على مشاكل (Bugs) عديدة. وأصناف (Classes) قليلة تخدم الأغراض البسيطة فقط.

تغيّرت الأمور تماماً في العام 1998 عندما طُرح الإصدار الثاني من JAVA والمسمّى JAVA2. لم تكن JAVA 2 سوى (منصّات متعدّدة) لأغراض متنوعة.

ملاحظة: المقصود بالإصدار الثاني هنا هو الإصدار 1.2 والذي ظهر سنة 1998 ونقل لغة JAVA من لغة بسيطة حديثة العهد ذات إمكانيات محدودة إلى لغة دخلت جميع المجالات تقريباً.

تدعم JAVA أربعة منصات (Platforms) لأغراض متنوعة، كما يلي:

  • JAVA Card: تقنية تتيح تشغيل التطبيقات الصغيرة لـ (JAVA Applets) على “البطاقات الذكية” والأجهزة المشابهة التي تمتلك ذواكر قليلة.
  • JAVA ME (اختصار: Micro Edition): بناء تطبيقات للأنظمة المضمّنة (Embedded System) وأجهزة الجوال (Mobile Devices).
  • JAVA SE (اختصار: Standard Edition): منصّة JAVA القياسيّة لبناء تطبيقات عامّة قابلة للحمل (Portable).
  • JAVA EE (اختصار: Enterprise Edition): توفر هذه المنصة APIs مختلفة لبناء تطبيقات “متعدّدة الطبقات” (Multi-tier). تطبيقات خادم / عميل (Client / Server) وتطبيقات المؤسسات (Enterprise Applications).

ملاحظة: تُختصر الأسماء أعلاه بالاسم J2 كـ J2ME، J2SE, J2EE.

لماذا لغة JAVA؟

امتازت لغة JAVA بالعبارة الشهرية “WORA” اختصار: (Write Once Write Anywhere) بمعنى: “أكتب مرة واحدة وشغّل في كل مكان”.

جذبت هذه العبارة السحرية آلاف المبرمجين حول العالم نظراً لما تقدّمه من مرونة كبيرة في نقل البرامج بين الأنظمة المختلفة مع الإبقاء على الشيفرة نفسها.

يمكنك بواسطة JAVA كتابة برنامج يعمل على Windows, Linux, Mac من دون الحاجة إلى كتابة نسخ مخصّصة لكل نظام تشغيل! فالشيفرة ذاتها التي تعمل على Windows ستعمل على Linux وعلى Mac أيضاً.

لنأخذ الشيفرة التالية مثلاً:

import javax.swing.*;
 
public class Main {
 
	public static void main(String[] args)
	{
		JOptionPane.showMessageDialog(null, "Hello World!" );
 
	}
}

لنستعرض “عملية الخرج” الخاصة بالشيفرة أعلاه:

  1. يقوم مترجم جافا (JAVA Compiler) بتحويل الشيفرة إلى ملف بامتداد class. يحتوي على شيفرة (Bytecode).
  2. تقوم “آلة جافا الافتراضة” (JAVA Virtual Machine) أو (JVM) بتحويل شيفرة البايت (Bytecode) إلى شيفرة قابلة للفهم بواسطة نظام التشغيل بواسطة “مفسّر جافا” (Java Interpreter).

تبين الصورة التالية العملية أعلاه بشكل مفصّل:

أهم المميزات للغة JAVA

تحتوي JAVA على مميزات عديدة أذكر أهمّها:

  • لغة بسيطة وسهلة الفهم. طبعاً لا توجد لغة بسيطة لكن لو قارنا JAVA بلغات أخرى كـ C أو ++C وحتّى PERL سنجد أن JAVA تتمتع بسهولة ووضوح كبيرين.
  • لغة “كائنية التوجّه” (Object Oriented) منذ ولادتها. إنَّ لغة JAVA هي اللغة الوحيدة المبنية أساساً كلغة كائنية التوجه (O.O). وهو ما يجعل شيفرة JAVA أكثر شيفرة برمجية تتمتع بالقوة والسهولة في نفس الوقت.
  • لغة موزّعة. يمكن بواسطة لغة JAVA بناء “تطبيقات موزّعة” (Distributed Applications) والمقصود بـ “التطبيق الموزّع” هو إمكانية تشغيل التطبيق على أجهزة متعدّدة لإنجاز مهمّة مشتركة بحيث يستفيد التطبيق من جميع الموارد المتاحة في الشبكة (Network).
  • لغة تفسيرية مستقلّة عن الآلة. حيث يتم ترجمة شيفرة جافا بواسطة “آلة جافا الافتراضة” بدلاً من ترجمتها إلى لغة الآلة بشكل مباشر مما يجعل برامج جافا قابلة للحمل بسهولة بين أنظمة التشغيل المختلفة من دون (إعادة ترجمتها). لنأخذ على سبيل المثال لغة ++C مثلاً، فعندما يتم ترجمة برنامج بواسطة “مترجم ++C” من “المستوى الأعلى” إلى لغة الآلة مباشرة فلن يعمل البرنامج إلا على الآلة التي تمت عليها عملية الترجة كـ Windows مثلاً، أما إذا أردت تشغيل البرنامج على آلة أخرى فيتوجب عليك إعادة ترجمته ليتلائم مع البيئة الأخرى.
  • لغة قوية. حيث تقوم مترجمات JAVA بالتأكد من عدم وجود العديد من المشاكل نظراً للقواعد الصارمة التي تفرضها JAVA على كتابة الشيفرة. كما أن JAVA حَذفت العديد من أنماط البيانات والتي تسبب إرباكاً للمبرمج (كالمؤشرات “Pointers“). بالإضافة إلى أن JAVA تُجبر المبرمج في أماكن محدّدة على معالجة الاستثناءات المحتملة.
  • لغة آمنة. إذا قمت على سبيل المثال بتشغيل بريمج (Applet) على متصفّح إنترنت ما، فإنه لن يؤذي جهازك لأن JAVA تطبّق عدّة آليّات أمنيّة للتأكّد من حماية نظامك ضد الضرر الذي من الممكن أن تسبّبه له البرامج غير النظامية.
  • لغة JAVA ذات هيكلية حياديّة. إحدى صفات JAVA هي أنها لغة تفسيرية (Interpreted Language) مما يجعلها لغة مستقّلة عن الآلة ويمنحها الاستقلالية عن المنصّة (platform-independent). يمكن بواسطة لغة JAVA كتابة برنامج واحد ليعمل على مختلف المنصّات.
  • لغة قابلة للحمل. بما أن JAVA لغة “ذات هيكلية حيادية” فإن برامجها ستكون “قابلة للحمل بين مختلف الأنظمة” من دعوة الحاجة إلى إعادة ترجمتها لكل نظام! على على ذلك لا توجد صفات محدّدة لمنصّة العمل من أجل تنفيذ برامج JAVA، فكل أنواع البيانات مثلاً تأخذ القيم ذاتها بين جميع المنصّات.
  • لغة ذات أداء عال. تعتمد لغة JAVA الحديثة (وأقصد بالحديثة ما الإصدار 1.2 فما فوق، والمسمّى J2) على تقنية (JIT) أو “Just-in-time compilation” والـ JIT هي عبارة عن طريقة لتحسين (Improve) أداء وقت التنفيذ (Runtime) لبرامج الحاسوب لتسّرع عملية تفسير البرنامج بواسطة JVM.
  • لغة متعدّدة المسالك (Multithreading). والمقصو بتعدّد المسالك هو إمكانية التنفيذ والاستجابة لعدّة مهام في نفس الوقت، كعملية تحميل وتشغيل الفيديو في نفس الوقت مثلاً.
  • لغة ديناميكية (Dynamic Language). صُمّمت لغة JAVA لتتكيّف مع تطوير البيئة، حيث من الممكن تحميل الشيفرة الجديدة بشكل حر وبدون إعادة ترجمة، وهذا يعني أنه لا توجد حاجة للمطوّرين.

مصطلحات مهّمة (يجب الإلمام بها)

هناك بعض المصطلحات (المهمّة) والتي يجب (الإلمام) بها، وهي كما يلي:

  • “آلة جافا الافتراضية” JAVA Virtual Machine أو JVM: مهمّتها هو تفسير شيفرة البايت (Bytecode) إلى شيفرة قابلة للفهم بالنسبة لنظام التشغيل. لاحظ أن “التفسير” (Interpreter) يختلف عن “الترجمة” (Compiling). “التفسير” (Interpreting) يقوم بتحويل شيفرة البايت (Bytecode) “المولّدة بواسطة “المترجم” (Compiler) إلى شيفرة قابلة للفهم لنظام التشغيل (هذا ما تمّ توضيحه في الصورة أعلاه).
  • JDK أو JAVA Development Kit: الحزمة التطويرية للغة JAVA حيث تشتمل على الكثير من الأدوات الخاصة بتطوير برامج JAVA كالمفسّر java ، المترجم javac ، مستعرض البريمجات appletviewer والعديد من مكوّنات التطوير الأُخرى.
  • JRE أو JAVA Runtime Environment: جزء من الحزمة JDK توفر المتطلبات الدنيا (Minimum Requirements) لتشغيل تطبيقات JAVA حيث يتألَّف من JVM و”الصفوف الأساسيّة” (Core Classes) والملفات الداعمة لتشغيل برامج JAVA.

استخدامات JAVA

تستخدم JAVA في مجالات عديدة، وعلى جميع أنظمة التشغيل تقريباً. في هذه السلسلة سنقوم ببناء تطبيقات بواسطة حزمة SE أو (Standard Edition) ثم ننتقل لبناء تطبيقات لأجهزة الـ Android في الدروس القادمة.

ماذا أحتاج للبدء؟

تحتاج إلى الأدوات التالية للبدء مع JAVA:

  • نظام تشغيل Windows / Mac OS / Linux (قادر على تشغيل JAVA SE الإصدار 6 فما فوق).
  • تحميل وتنصيب JDK (الإصدار 6 فما فوق) من هذا الرابط.
  • بيئة تطوير Eclipse Classic. قم يتحميل البرنامج من هذا الرابط.

برنامج Hello World

  1. قم بإنشاء مشروع جديد بواسطة Eclipse عن طريق File ثم New ثم Java Project.
  2. في الحقل project name أدخل الاسم MyFirstJavaApp.
  3. الخيار JRE اجعله على Use default JRE.
  4. أضغط Finish.
  5. أضغط بالماوس الأيمن على مجلد src ثم اختر Class.
  6. في الحقل Name أدخل Main.
  7. أضغط على Finish.
  8. أمسح الشيفرة الموجودة بالملف وأدخل الشيفرة التالية:
1
2
3
4
5
6
7
8
import javax.swing.JOptionPane;
 
public class Main {
    public static void main(String[] args) {
        JOptionPane.showMessageDialog(null, "Hello World!");
    }
 
}

في هذا الدرس تطرّقنا لأساسيات لغة JAVA فقط في الدروس سنتعمق بشكل أكبر.

أتمنى أن تكونوا قد استفدتم :-).

بانتظار التعليقات.

عدد التعليقات 7

  • Eng.abdulaziz :

    ما شاء الله تبارك الله..
    اهنئك على ابداعك في طرح الدرس
    ارجو ان تواصل هذا الابداع العظيم..
    وهذا موقع يشرح الجافا بطريقة جيدة http://programming.inbrief.ws/ar/java
    ان شاء الله ان ينال على اعجابكم..
    وانا بانتظار كل جديد لديكم —–> واصل ابداعك

  • سنوسي :

    Write Once Run Anywhere

  • Eng.abdulaziz :

    يعطيك الف عافية على هذا المجهود..
    وبكل صراحة اهنئك على هذه المدونة الرائعة..

    وللفائدة هذا موقع للجافا جيد وبه دروس متجددة ارجو ان ينال اعجابكم
    http://programming.inbrief.ws/ar/java

  • Mohammed Fahad :

    ماقصرت أخوي أحمد ، أتمنى لك التوفيق دومآ .

  • Samir Nthinkers :

    بارك الله فيك أخ أحمد على هذا الدرس الرائع والجهد المبذول، سوف نتابع كل جديد ونأمل مزيدا من الدروس.
    تحياتي

  • continue :

    مش عارف أقول إيه بصراحة ربنا يباركلك روعة .

  • الريم :

    بارك الله فيك اخي احمد انما اتيت هنا لنقص خبرتي وحبا في متابعة مواضيعك اللتي تنورنا في امور البرمجه واهميتها لنا كـوننا العرب مجرد متصفحين لا اكثر فلنطور من انفسنا لنصبح مشاركين لا مجرد متصفحين وجمهور لما يفعله غيرنا شكرا اخي احمد :)
    تحياتي ..
    الريم

تعليقك على الموضوع

خلاصات التعليقات RSS   التعقيبات

جميع الحقوق محفوظة لـ مدونة أحمد المياحي © 2017