إن البدء في استخدام Java أبسط بكثير مما كنت أعتقد. حتى الآن، لدي فهم للبنية النحوية الأساسية لـ Java. لكنني أعلم أن الدراسة المتعمقة لأي لغة تتطلب تراكم الوقت والممارسة.
التطبيق الصغير عبارة عن كود مكتوب بلغة Java ويمكن تشغيله من جانب المتصفح. يكمن الاختلاف الواضح بينه وبين التطبيق في طريقة تنفيذه على سبيل المثال، يبدأ برنامج C في العمل من البرنامج الرئيسي ()، في حين أن التطبيق الصغير أكثر تعقيدًا، ولا أعرف بالضبط مدى تعقيده، لكنني سأفهمه تدريجيًا. من الخصائص المهمة في Applet أنه يمكنني تمرير القيم في HTML كمعلمات إلى Applet (الحصول على قيمة المعلمة من خلال getParameter()). بهذه الطريقة، من أجل إنتاج تأثيرات مختلفة، لا نحتاج إلى إعادة ترجمة برنامج Java ولكن فقط قم بتعديل قيم معلمات HTML. نظرًا لأنه يمكن أيضًا إنشاء كود HTML ديناميكيًا، فيمكنني التحكم في التأثيرات الديناميكية لصفحة الويب كما أريد.
هناك ثلاث طرق رئيسية في دورة حياة التطبيق الصغير: init، start، وstop.
init(): مسؤول عن تهيئة التطبيق الصغير. يتم تنفيذ هذه الطريقة مرة واحدة فقط خلال دورة حياة التطبيق الصغير بالكامل. وهو نفس حدث OnCreate() في دلفي
start(): بعد أن يقوم النظام باستدعاء init(). سيتم استدعاء start() تلقائيًا، وفي كل مرة يتم إعادة تنشيط النافذة الحالية، سيتم استدعاء هذه الطريقة، والتي تشبه حدث OnShow() في دلفي.
stop (): يتم استدعاء هذه الطريقة بعد أن يغادر المستخدم الصفحة التي يوجد بها التطبيق الصغير. يسمح لك بإيقاف عمل بعض الموارد عندما لا ينتبه المستخدم إلى التطبيق الصغير حتى لا يؤثر على كفاءة تشغيل النظام ولا نحتاج إلى إزالة هذه الطريقة بشكل مصطنع. حدث في دلفي
ما يلي هو اسم الملف لإصدار برنامج HelloWorld
: HelloWorld.java
import java.applet.Applet;
import java.awt.Graphics;
public class HelloWorld يمتد التطبيق الصغير
{
عنوان السلسلة؛
الحرف الفراغي العام () {
عنوان = "مرحبا بالعالم";
}
طلاء الفراغ العام (الرسومات ز)
{
g.drawString(title, 50, 20);
}
}
يمكننا أن نرى أنه لا توجد وظيفة رئيسية في البرنامج، فكيف يعمل؟ بما أن التطبيق الصغير يعمل في بيئة المتصفح، نحتاج إلى استدعائه في ملف HTML. العلامات ذات الصلة التي يجب استخدامها هي < علامة Applet>، نقوم أولاً بإنشاء ملف HTML test.htm، ويكون كود المصدر كما يلي:
<html>
<الجسم>
هنا يأتي برنامجي الأول:
<ر>
<رمز البرنامج =HelloWorld.class width=650 height=500>
</التطبيق الصغير>
</التطبيق>
</الجسم>
</html>
ضع هذا الملف في نفس الدليل مثل HelloWorld.java، ثم قم بتجميع HelloWorld.java، وانقر فوق test.htm لفتحه مباشرة، ويمكنك أن ترى أن برنامج Applet قد بدأ أو استخدم اختبار AppletViewer لأمر AppletViewer. htm يمكنك أيضًا تشغيل التطبيق الصغير مباشرة بدون متصفح.
يمكن أن يساعدنا البرنامج التالي بشكل أفضل في فهم كيفية استدعاء Java Applet للطرق التي قدمناها أعلاه طوال دورة حياته.
اسم الملف: StartStop.java
import java.awt.*;
import java.applet.*;
يقوم StartStop بتوسيع التطبيق الصغير
{
رسالة StringBuffer؛
الحرف الأول الفراغي العام ()
{
message=new StringBuffer("تم التهيئة...");
}
بداية الفراغ العام ()
{
message.append("بدأت...");
}
توقف الفراغ العام ()
{
message.append("توقف...");
}
طلاء الفراغ العام (الرسومات g)
{
g.drawString(message.toString(), 150, 50);
}
}
طريقة التشغيل هي نفسها المذكورة أعلاه (بالنسبة لهذا البرنامج، يرجى الرجوع إلى <Java Concise Tutorial> الخاص بصناعة الآلات)
على عكس لغة C، من الأسهل بكثير تنفيذ واجهة المستخدم الرسومية باستخدام Java. نظرًا لأنها لغة موجهة للكائنات بحتة، توفر Java AWT عناصر واجهة مختلفة يمكننا الاتصال بها، تمامًا مثل المكونات الموجودة في دلفي. ما يلي هو جدول مقارنة لكائنات واجهة المستخدم الرسومية في Java والمكونات المقابلة لها في دلفي.
جافا دلفي
زر تي بوتون
قماش تي كانفاس
خانة الاختيار TCheckbox
CheckboxGroup TRAdioGroup
اختر تي كومبو بوكس
تسمية TLabel
تحرير حقل النص
TextArea TMemo
ليست أداة تطوير RAD مرئية (التطوير السريع للتطبيقات). لا يمكن استخدام الكائنات عن طريق السحب والتحويل فقط مثل دلفي، ولكنه يتطلب منا كتابة كود الاتصال. وهذا يخلق مشكلة، كيف يمكنني ذلك هل يمكنني وضع العناصر في الواجهة وفقًا لمتطلباتي عندما لا يكون هناك العديد من العناصر، يمكنني السماح لـ Java بالتخطيط (التخطيط) تلقائيًا، ولكن عندما يكون هناك العديد من العناصر، أو عندما يلزم وضع العناصر وفقًا لمتطلبات في التطبيق، تحتاج إلى استخدام لوحة (لوحة). تحتوي اللوحة أيضًا على مكونات مقابلة (TPanel) في دلفي، ولكنها تستخدم بشكل أساسي لتقسيم الواجهة وإنشاء تخطيط تقريبي يتطلب ضبطًا يدويًا من قبل المطور Java، لا يمكن استخدامها إلا باستخدام اللوحة لتحديد موضعها، وهو عيب ربما لم أتعلمه بعد.
بعد البدء، حان الوقت للتعمق في مفهوم الأشياء.
افترض أنه تم إنشاء نوع بيانات مخصص يسمى التاريخ في Java على النحو التالي
تاريخ الفصل العام{
يوم كثافة العمليات؛
شهر كثافة العمليات؛
سنة كثافة العمليات؛
}
إذن بالنسبة للعبارات الثلاثة التالية التي تعلن عن المتغيرات، هل هناك أي فرق عندما تخصص Java الذاكرة لها؟
(1) كثافة العمليات ط؛
(2) تاريخ ميلادي؛
(3) Date mybirth=new Date();
من الواضح أن هذا موجود، والتخصيص كما يلي:
(1) تقوم Java تلقائيًا بتخصيص ذاكرة متغير عدد صحيح للعدد الصحيح i، وعادةً ما يكون بايتان
(2) تعلن Java عن فئة التاريخ يتم تخصيص متغير المثيل mybirth بمساحة تخزين، ولكن ما يتم تخزينه في مساحة التخزين هذه هو مجرد مرجع أو عنوان، ولا يوجد شيء في العنوان الحالي، لذلك لا يمكننا استخدام متغير المثيل هذا أو الرجوع إلى أعضائه.
(3) تقوم Java بإنشاء متغير مثيل mybirth لفئة التاريخ، وتخصيص مساحة تخزين كافية لمتغيرات أعضائها، وأخيرًا إرجاع مرجع إلى مساحة التخزين هذه، أي إرجاع العنوان الأول لمساحة التخزين هذه، ثم تمرير mybirth ، أي أنه يتم استخدام هذا العنوان الأول للوصول إلى كل عضو في متغير المثيل هذا، مثل mybirth.day، وmybirth.month، وmybirth.year.
عندما نعلن عن متغير من نوع البيانات الأساسي (مثل boolean، byte، short، char، int، long، flat، double)، سيقوم النظام تلقائيًا بتخصيص الذاكرة للمتغير. ولكن إذا تم الإعلان عن سلسلة أو متغيرات محددة من قبل المستخدم، فلن يقوم النظام بتخصيص الذاكرة لها على الفور. لماذا هذا؟
لأن كلا من السلسلة والمتغيرات المحددة من قبل المستخدم تنتمي إلى الفئة A المعلنة كفئة المتغير لم تعد جزءًا من البيانات، بل هي إشارة إلى البيانات، وهذا يعني أنه يمكن اعتبار ميلادي بمثابة مؤشر لمثيل الفصل، ويتم تخزين العنوان فيه، وهذا أمر سهل الفهم.
للتعمق أكثر، نظرًا لأن قيمة متغير المثيل لفئة ما هي مؤشر، ويشير هذا المؤشر إلى مثيل للفئة، فمن الواضح أنه يمكننا تحديد متغيرات المثيل لفئات متعددة بأسماء مختلفة، وتوجيهها جميعًا إلى مثيل واحد. على سبيل المثال:
University u=new University();// تم تحديد متغير مثيل u لفئة الجامعة، وتخصيص مساحة تخزين الكائن له
University u2=u;// تم تعريف متغير المثيل u2 أيضًا ، وتم تعيين قيمة u لها. فمن
الواضح أن u2 و u هما في الواقع نفس الشيء باستثناء أسمائهما المختلفة، لأنهما يشيران إلى نفس العنوان.
أعتقد أنه لا يزال من المهم توضيح هذه النقطة. هياكل البيانات هذه هي ما يحتاج المبرمج إلى معرفته.