تاریخچه
تاریخچه کامل سیستم عامل اندروید
سیستمعامل اندروید گوگل در این چهار سالی که از تولد آن گذشته، مراحل رشد و دگردیسی متعددی را پشت سر گذاشته است. از اولین تجربهی آن در گوشی G1 گرفته تا حضور در گوشیهای هوشمند و تبلتهای رنگارنگ امروزی که همه جا میتوان نشان سبز رنگ و دوستداشتنی اندروید را مشاهده کرد. بیایید به روند توسعه اندروید نگاهی بیاندازیم.
این سیستمعامل در سه سال گذشته نُه نسخه مهم را ارائه کرده است: نُه! جالب اینکه سیستمعامل ویندوز در این 25 سال تنها ده نسخه مهم را عرضه کرده است. باید این نکته را بپذیریم که در دنیای فناوری هیچ سیستمعامل یا نرمافزار کاربردی این چنین روند پرسرعتی را در تکوین، تجربه نکرده است و اندروید در مرکز این دگرگونی، سریعتر از همه بوده است. در این مقاله میخواهیم به سیستمعامل اندروید و تاریخچه آن نگاه موشکافانهتری داشته باشیم. با زومیت همراه باشید.
کیتکت
گوگل در نوامبر سال 2005 شرکتی به نام Android را خرید، شرکت کوچکی که نرم افزار برای تلفن های همراه میساخت، اما این موضوع را اعلام نکرد تا در نیمه دوم سال 2007 که رسما اعلام کرد، قرار است سیستم عامل متن باز برای تلفنهای همراه منتشر کند.
کمپانی گوگل در سال ۲۰۰۸ اولین نسخه اندروید را ارائه نمود. شاید دستاندرکاران این کمپانی در آن زمان خودشان نیز تصور نمیکردند که روزی این محصول متنباز به فراگیرترین سیستمعامل موبایل تبدیل شود. در این مقاله نگاهی تقریبا مفصل به روند توسعه اندروید خواهیم داشت و سیر تکامل قابلیتهای آن را از اولین تا آخرین نسخه آن یعنی آبنبات پاستیلی 4.2 شرح خواهیم داد. لازم به ذکر است که منبع اصلی تا نسخه 4.1 را پوشش داده بود و بخش مربوط به نسخه 4.2 توسط تیم زومیت گردآوری شده است. تلاش خواهیم کرد تا در آینده نیز با معرفی نسخههای جدید اندروید، این مقاله را بروزرسانی کنیم. پس بیایید ببینیم که چطور ایدهی کودکی اندی روبین سر از دنیای فناوری و گوشیهای تلفن همراه درآورده است.
نقطه آغاز
دوران اندروید به طور رسمی از 22 اکتبر 2008 میلادی، زمانی که گوشی T-Mobile G1 در ایالات متحده عرضه شد، آغاز گردید. در ابتدای امر، بسیاری از قابلیتهایی که نمیتوان اندروید را بدون آنها متصور بود در این گوشی وجود نداشت. برای نمونه میتوان به فقدان صفحه کلید مجازی (لمسی)، قابلیت چند لمسی، برنامههای کاربردی حرفهای و... اشاره کرد، اما همین گوشی سنگبنایی شد تا امروزه با اندرویدی چنین پیشرفته سروکار داشته باشیم.
ویژگیهای اولیه این نسخه از اندروید عبارتند از:
پنجرهی اعلانات:
گرچه این گوشی فاقد تمامی قابلیتهای اندروید امروزی است، با این حال از همان روزها نیز کادر پایینروندهی اعلانات (Notifications) را داشته است. نوار وضعیت گوشی G1 را میتوان یکی از قابلیتهای منحصر به فرد آن به شمار آورد، که کاربر میتواند آن را به پایین کشیده و از جزئیات بیشتر اطلاع حاصل کند، این موارد عبارت بودند از پیامک، پست صوتی، هشدارها و سایر اطلاعاتی از این قبیل. این امکان همچنان در نسخههای جدیدتر اندروید نیز وجود دارد.
ویجتهای صفحه خانه:
یکی از تفاوتهای عمده سیستمعامل اندروید با وجود رقبای سرسختی چون iOS یا ویندوز فون این است که این سبزک دوستداشتنی از ویجت به طرز بسیار خوبی پشتیبانی میکند. گوگل از همان روزهای آغازین برای این موضوع برنامهریزی خوبی کرده بود، گرچه در ابتدا توسعهدهندگان نرمافزاری قادر به تهیه ویجتهای مورد نظر خود نبودند!
یکپارچهسازی با سرویس پست الکترونیکی جیمیل:
زمانی که گوشی G1 عرضه شد، سرویس پستالکترونیکی جیمیل از پروتکلهای POP و IMAP برای یکپارچهسازی در ابزارهای گوناگون دیگر پشتیبانی میکرد. اما مشکل آنجا بود که هیچ یک از این پروتکلها قادر به استفاده از دو قابلیت اختصاصی جیمیل یعنی برچسبزنی و آرشیو قدرتمند آن نبودند. موردی که اندروید 1.0 توانست آن را به طرز خوبی حل و فصل نماید و یکی از بهترین تجربههای کار با جیمیل در بستر گوشیهای موبایل را فراهم آورد.
فروشگاهی به نام اندروید مارکت:
این روزها تصور یک گوشی هوشمند بدون دسترسی به یک فروشگاه متمرکز نرمافزاری غیرممکن است. این موضوع در حالی است که اندروید 1.0 فاقد چنین قابلیتی بود و ضرورت وجود چنین بازارچهای از همان زمان به خوبی حس میشد. گفتنی است گوشی G1 به همراه مجموعهای از نرمافزارهای کاربردی عرضه شد تا این که بعدها گوگل، مارکت معروف خود را تهیه و تدارک دید. یکی دیگر از نقایص اندروید در آن دوران، فقدان پشتیبانی از سیستم پرداخت بود، که یک سال بعد این مورد نیز مرتفع شد.
جالب است بدانید که رابط کاربری توسعهیافتهی گوگل برای اندروید 1.0 ماحصل همکاری آنها با شرکت سوئدی Astonishing Tribe بوده است. شرکت مزبور در زمینهی ارائهی طراحیهای چشمگیر نرمافزاری مشغول به فعالیت بود و سالهای سال رابطهای کاربری قابل توجهی را تهیه و ارائه کرد. اگر با دقت بیشتری نگاه کنید، میتوانید نشان TAT را به خوبی در این پلتفرم ملاحظه نمایید؛ به خصوص در ساعت آنالوگ که از اندروید 1.0 تا 2.2 با نشان کوچک Malmo قابل رویت بود. گفتنی است Malmo نام شهری است که این شرکت سوئدی در آن قرار داشت. بعدها این شرکت توسط کمپانی RIM خریداری شد و تمرکز اصلیاش بر توسعهی گوشیهای بلکبری و پلتفرم BBX قرار گرفت.
اندروید 1.1
نخستین بروزرسانی اندروید سه ماه پس از عرضه گوشی G1 در فوریه 2009 میلادی صورت پذیرفت. نسخه 1.1 را نمیتوان به هیچ وجه محصولی نوآورانه دانست؛ بلکه بیشتر به مثابه وصلههای نرمافزاری برای بهینهسازی سیستم و رفع باگهای آن بود. از طرف دیگر این نسخه توانایی اندروید را برای بروزرسانی بی دردسر به خوبی نشان داد. همین قابلیت پیشپا افتاده در زمان عرضه نسخهی 1.1 یکی از نقاط قوت اندروید به حساب میآمد که تا به امروز نیز همچنان ادامه دارد، چرا که سایر سیستمعاملهای موبایل فاقد قابلیت مشابهی بودند.
وقت دسر فرارسید: نسخه 1.5 یا «کیک یزدی»
بسیاری از ما اندروید 1.5 را بیشتر به نام کیکیزدی (Cupcake) میشناسیم، سیستمعاملی که حقیقتاً نقطهی عطفی در تاریخچهی اندروید به شمار میرود. در این نسخه برخی از قابلیتهای کلیدی به اندروید افزوده شد. از این گذشته اندروید 1.5 اولین نسخه از این سیستمعامل بود که از روش نامگذاری ویژهی گوگل بهرهمند گردید. از آن پس بود که هر بروزرسانی کلی با نام یکی از شیرینیجات (البته به ترتیب حروف الفبای لاتین) همراه میشد تا بر دلچسبی اندروید بیافزاید.
از جنبههای گوناگون اندروید کیک یزدی را میتوان گامی بزرگ در جهت اصلاح و بهبود این سیستم عامل دانست. هم از نظر تکنیکی-فنی و هم از منظر زیباییشناختی که رابطکاربری آن با تغییرات مثبتی همراه شد. بسیاری از این تغییرات آنچنان محسوس نبودند، برای نمونه ویجت جستجوی گوگل از این پس از ظاهری شفاف بهرهمند شد.
از جنبههای گوناگون اندروید کیک یزدی را میتوان گامی بزرگ در جهت اصلاح و بهبود این سیستم عامل دانست. هم از نظر تکنیکی-فنی و هم از منظر زیباییشناختی که رابطکاربری آن با تغییرات مثبتی همراه شد
تغییرات صورت گرفته در نسخه جدید اندروید آنچنان نامحسوس بودند که اگر کاربر یک دستگاه مجهز به اندروید 1.1 را به 1.5 ارتقا میداد، هیچ تغییر چشمگیر خاصی را احساس نمیکرد. در حالی که همه چیز از چینش متون گرفته تا سایههای نوار وضعیت همه دستخوش تغییر و دگرگونی اساسی شده بودند. و اغلب کاربران گوشی G1 بدون آنکه این تغییرات را متوجه شوند، از آنها گذشتند. البته موارد مهم ذیل غیر قابل انکار مینمود:
صفحهکلید مجازی:
شاید به نظر شما عجیب و غیرممکن برسد که گوگل اندروید خود را بدون هیچ صفحهکلید مجازی عرضه کرده باشد، اما واقعیت همین است! شاید به همین خاطر بود که آنها نخستین میزبان سختافزاری خود را گوشی G1 انتخاب کردند، چرا که این گوشی دارای یک صفحهکلید از نوع QWERTY بود که به صورت کشویی باز میشد و کاربر را قادر میساخت تا به تایپ متون بپردازد. این وضعیت تا عرضهی نسخهی کیک یزدی در آوریل 2009 میلادی (یعنی بیش از 6 ماه پس از عرضهی G1) همچنان ادامه داشت. از آن پس بود که گوگل از قابلیتهای سختافزاری گوشی HTC Magic بهره برد و نخستین گوشی را به بازار عرضه کرد که تنها دارای صفحه کلید مجازی بود.
از ارائهی صفحه کلید مجازی که بگذریم، گوگل حرکت بارز دیگری نیز صورت داد. مهندسان گوگل بالاخره موفق شدند اقدامات لازم برای پذیرش صفحهکلیدهای ثالث را میسر سازند، قابلیتی که به کمک آن میتوان صفحهکلیدی خارج از مورد پیشبینی شدهی سیستمعامل اندروید را فعال کرده و به کار گرفت. موردی که به خصوص برای کاربران سایر زبانها بسیار مورد توجه قرار گرفت. جالب است بدانید حتی امروزه نیز رقبای سرسختی چون iOS یا ویندوز فون از چنین ویژگی مهمی بیبهره هستند. متاسفانه در زمان عرضهی اندروید کیک یزدی صفحه کلید عرضه شده در این سیستم عامل نسبت به iOS از دقت و سرعت بسیار پایینی برخوردار بود. موردی که بالاخره مشارکت شرکای سختافزاری نظیر HTC را طلبید و به کمک آنها این مشکل در محصولات اختصاصی این شرکتها رفع گردید.
ویجتهای قابل توسعه:
در حالی که اندروید 1.0 و 1.1 از نظر فنی دارای قابلیت تازهای به نام ویجت یا ابزارک بودند، پتانسیل کامل آنها همچنان غیر قابل دسترس بود و شرکتهای ثالث میبایست تا عرضهی SDK مربوطه از سوی گوگل صبر بیشتری میکردند. در آن دوران تنها ابزارک موجود کادرهایی بودند که در اندروید پیشبینی شده بود. خوشبختانه این مورد با عرضهی اندروید 1.5 مرتفع شد و امروزه شاهدیم که بسیاری از نرمافزارهای ثالث از قابلیت ابزارک بهرهمند هستند. در حقیقت میتوان وجود صفحههای خانگی انعطافپذیر را یکی دیگر از خصوصیات بینظیر این سیستمعامل تلفنهای هوشمند به حساب آورد.
بهبود کلیپبورد (Clipboard):
اندروید راهی دشوار را برای دست یابی به قابلیت کپی و چسباندن (Copy & Paste) طی کرده است. از نظر تکنیکی چنین قابلیتی از روز نخست در این پلتفرم پیشبینی شده بود، اما تا حد زیادی به کادرهای متنی و لینکها محدود شده بود. بدین معنی که کاربر نمیتوانست متنهای دلخواه را از داخل پنجرهی مرورگر یا برنامهی مدیریت پستالکترونیکی جیمیل کپی نماید و اغلب اوقات این نیاز حس میشد. گرچه قابلیتهای کامل کپی و چسباندن تا سالها به برنامه جیمیل راه پیدا نکرد، از نسخه کیک یزدی پشتیبانی از این قابلیت در برنامهی مرورگر افزوده شد و بدین ترتیب کاربر میتوانست متن مورد نظر را از این برنامه بیرون بکشد.
ضبط و بازپخش ویدئویی:
این روزها تصور یک گوشی هوشمند بدون توانایی ضبط و پخش ویدئویی بسیار مشکل است، اما این وضعیتی است که کاربران گوشی G1 آن را تجربه کردهاند. گرچه کیک یزدی کوشید تا این نقیصه را رفع کند، ولی صفحهکلید اندروید و رابط ویژهای که برای بخش دوربین آن در نظر گرفته بودند خالی از اشکال نبود. موضوعی که دوباره با همت OEMها یا همان شرکای سختافزاری سریعاً رفع و رجوع شد و با ارتقای رابط کاربری، شاهد پشتیبانی خوبی از قابلیتهای لمسی گوشیها بودیم.
و قابلیتهای بیشتر:
بروزرسانی موارد جزئیتر شامل عملیاتهای دستهای در جیمیل (پیشتر کاربران نمیتوانستند چندین نامه را با هم حذف یا آرشیو نمایند)، بروزرسانی پشتیبانی از سرویسهای یوتیوب و پیکاسا و دسترسی به وضعیت کاربر در Google Talk در همه جا، برنامه پیغام رسان و غیره را میتوان از دیگر قابلیتهای این نسخه برشمرد.
نسخه 1.6 یا «پیراشکی»
گرچه اندروید 1.6 پیراشکی یا Donut به اندازهی کیک یزدی متفاوت نبود، با این حال میتوان پیراشکی را نیز نسخهای متفاوت دانست که خیلی بیشتر از آن عدد 0.1 ارتقا با کیک یزدی تفاوت داشت! در این نسخه شاهد بروز بهبودهای جزئی دیگری در کل پلتفرم هستیم که قابلیتهای جدیدی را برای کاربران به ارمغان آورد. البته بخش بزرگی از این تغییرات مربوط به مواردی بود که در پشتپرده اتفاق میافتاد. برای نمونه نخستین بار در تاریخ اندروید پشتیبانی از CDMA از این نسخه میسر گردید و بدین ترتیب شرکتهایی همچون Verizon توانستند به بازار امریکا و آسیا دست یافته و سود سرشاری را نصیب خود و گوگل کنند.
میتوان پیراشکی را نیز نسخهای متفاوت دانست که خیلی بیشتر از آن عدد 0.1 ارتقا با کیک یزدی تفاوت داشت!
از سوی دیگر یکی از مهمترین اصلاحات در این نسخه را میتوان بهیه و مستقل شدن وضوح صفحه نمایش دانست. پیراشکی برای نخستین بار موفق شد اندروید را قادر سازد تا در انواع صفحات با وضوح و نسبت نمایش گوناگون ظاهر شود، بدین ترتیب درهای بسته به روی اندروید گشوده شد تا نه تنها در گوشی هایی با صفحه نمایش 480×320 پیکسلی ظاهر شود بلکه انواع صفحات نمایش از QVGA ،HVGA و WVGA گرفته تا FWVGA ،qHD و حتی 720p را به زیر سیطره خویش کشد.
در اندروید پیراشکی قابلیت کادر جستجوی سریع نیز ارائه گردیده است، مفهومی که در دنیای رایانه از آن با عنوان «جستجوی کلی» نیز یاد میشود. پیش از پیراشکی اگر کاربر در صفحه آغازین بود، با فشردن دکمه جستجو گوشی به کادر جستجوی گوگل هدایت میشد و میتوانست از آنجا اینترنت را بکاود به گونهای که همهی جستجوها به سایت google.com هدایت میشد. از نسخه 1.6 (پیراشکی) به بعد، کاربر میتوانست بجز اینترنت حتی بخشهایی از گوشی خود را نیز به طور محلی جستجو نماید که شامل برنامهها، اطلاعات تماسها و موارد دیگری از این دست میشد. از این گذشته در پیراشکی قابلیتی تعریف شده بود که به کمک آن برنامهنویسان میتوانستند برنامهی خود را جزء موارد جستجو شوندهی محلی قرار دهند.
پیراشکی برای نخستین بار موفق شد اندروید را قادر سازد تا در انواع صفحات با وضوح و نسبت نمایش گوناگون ظاهر شود
از دیگر خصوصیات پیراشکی میتوان به طراحی مجدد فروشگاه اندروید در رنگبندی سفید و سبز معروف دانست. از این گذشته این برنامه قادر بود تا فهرستی از برترین برنامههای رایگان و قابل خریداری را نمایش دهد، موضوعی که با گسترش عرضه برنامههای ثالث بر روی این پلتفرم به خوبی نیازش حس میشد. از سویی دیگر رابطکاربری ابزار دوربین نیز تغییر کرد و بجز یکپارچگی بهتر با گالری، مشکلات شاتر آن نیز تا حد زیادی رفع شد. با این حال نتوانست آنچنان که باید و شاید ظاهر شود و همچنان ایرادات زیادی متوجه دوربین بود، موضوعی که تا اندروید 2.3 ادامه داشت.
نسخه 2.0 یا «نان خامهای»
در اوایل نوامبر 2009 میلادی، تقریباً یک سال پس از عرضه گوشی G1، اندروید 2.0 عرضه شد. «بزرگ» صفت خوبی برای توصیف نان خامهای یا Eclair گوگل بود چرا که این نسخه از سیستمعامل اندروید دستاوردی بزرگ با وعدههایی بزرگ بود که بر روی گوشیهای بزرگ کمپانیهای بزرگ عرضه میشد!
«بزرگ» صفت خوبی برای توصیف نان خامهای یا Eclair گوگل بود چرا که این نسخه از سیستمعامل اندروید دستاوردی بزرگ با وعدههایی بزرگ بود که بر روی گوشیهای بزرگ کمپانیهای بزرگ عرضه میشد!
در ابتدا نان خامهای به صورت اختصاصی بر روی گوشیهای Verizon عرضه شد و یکی از بهترین تجربههای همکاری در این زمینه را رقم زد. اما چه عواملی موجب شد تا نان خامهای این چنین موفق باشد؟ در این نسخه بیشترین تغییرات بر روی سیستمعامل گوگل هم از نظر بصری و هم معماری داخلی صورت گرفت.
در ذیل برخی از مهمترین این تغییرات را برشمردهایم:
پشتیبانی از حسابهای چندگانه:
برای نخستین بار کاربران قادر بودند تا حسابهای چندگانهی خود در گوگل را در یک ابزار واحد وارد کنند و با وجود جداسازی موارد کاری و شخصی از آن به خوبی بهره ببرند. از این پس کاربران میتوانستند چندین حساب پست الکترونیکی خود نزد جیمیل را چک کرده و از قابلیت پشتیبانی از تبادل حسابها بهرهمند شوند.
از این گذشته نان خامهای این امکان را به شرکتهای ثالث میداد تا ابزار لازم برای استفاده از این قابلیتها را داشته باشند و از روند همگامسازی خودکار بهره ببرند. یکی از مزیتهای کلیدی اشتراکگذاری اطلاعات بین حساب شما و برنامهی تماسهای گوشی بود، بدین ترتیب میشد با یک حرکت، کلیه اطلاعات تماس موجود در حساب کاربری را در گوشی نیز داشته باشیم. فیسبوک یکی از نخستین شرکتهایی بود که این قابلیت را مغتنم شمرد و از آن استفاده کرد.
برنامهی رایگان ناوبری به همراه اندروید 2.0 عرضه شد که از اطلاعات نقشه گوگل برای راهنمایی و هدایت کاربر استفاده میکرد.
قابلیت ناوبری نقشه گوگل:
این مورد یکی از مهمترین ویژگیهای اندروید نان خامهای بود که همچنان محبوب است. این برنامهی رایگان ناوبری به همراه اندروید 2.0 عرضه شد که از اطلاعات نقشه گوگل برای راهنمایی و هدایت کاربر استفاده میکرد. این برنامه مجهز به بسیاری از قابلیتهایی بود که از یک برنامه ناوبری خودرو انتظار میرود! نمایش نمایی سهبعدی مسیر پیش رو، راهنمای صوتی (شامل نام خیابانها) و اطلاعات ترافیکی مسیر.
پیش از این رانندگان میبایست هزینهی سنگین اشتراک ماهانه یا خریداری کلی یک برنامه اینچنینی را میپرداختند. البته نسخههای اولیه خالی از اشکال نبود و از آنجایی که قادر به کش کردن اطلاعات نبود، نیازمند اتصال دائمی به شبکه اینترنت داشت. البته ایرادات برنامه به مرور مرتفع شدند و گوگل این امکان رایگان را برای کاربران هدیه کرد.
دسترسی سریع به اطلاعات تماس:
از اندروید کیک یزدی به بعد دسترسی اطلاعات تماس سرویس Google Talk در تمامی گوشیها میسر شد و در نسخه نان خامهای نیز قابلیت تازهی افزودن نوار دسترسی سریع به اطلاعات تماس ارائه گردید. بدین ترتیب کاربر قادر بود تا برای رفع نیازهای مختلفی از قبیل ایمیل، پیامک، تماس تلفنی و غیره به این موارد دسترسی داشته باشد.
ارتقای صفحه کلید مجازی:
گوشی Droid نیز همچون گوشی D1 دارای یک صفحه کلید فیزیکی QWERTY بود و گوگل میکوشید تا در کنار وجود چنین سختافزاری از نظر نرمافزاری نیز صفحه کلید مجازی مناسبی را برای سیستم عامل خود مهیا سازد. از آنجایی که قابلیت چند لمسی هنوز در همه جای این پلتفرم پشتیبانی نمیشد، کار کردن در برنامههای مرورگر و نقشه قدری دشوار بود. به همین خاطر از نان خامهای به بعد تشخیص دادههای چند لمسی از طریق صفحهکلید میسر گردید و بر دقت و سرعت تایپ دادههای ورودی افزوده شد.
بازسازی برنامه مرورگر:
همانطور که پیشتر ذکر آن رفت، مرورگر اندروید نان خامهای با وجود پیشرفت در زمینههای گوناگون، هنوز از قابلیت بزرگنمایی چند لمسی پشتیبانی نمیکرد. از آنجایی که اندروید 2.0 بر روی دستگاهی عرضه میشد که دارای صفحه نمایش WVGA بود، لازم بود تا مرورگر قادر به نمایش درست اطلاعات سایتهای اینترنتی باشد. به همین خاطر، گوگل پشتیبانی از زبان HTML5 و تصاویر ویدئویی را به آن اضافه کرد. از سوی دیگر در این نسخه از اندروید بود که برنامه مرورگر مجهز به نوار نشانی شد و شباهت بسیار بالایی به مرورگر اینترنت گوگل کروم پیدا کرد. همچنین برای رفع مشکل چند لمسی، در این نسخه از مرورگر قابلیت بزرگنمایی با دو بار ضربه زدن بر روی صفحه میسر شد، که جایگزین خوبی برای بزرگنمایی و کوچکنمایی سریع در برنامه به حساب میآمد.
نسخه 2.1 با همان نام «نان خامهای»
تغییرات گسترده دیگری در نسخه 2.1 اندروید صورت گرفت. این نسخه از سیستم عامل گوگل آنچنان در زمان خود خوب بود که بسیاری از گوشیهای جدید به آن مجهز شدند. از این گذشته بسیاری از ایرادات نرمافزاری دیگر نیز در این نسخه رفع گردیدند، با این حال همانند اندروید 2.0 نسخه 2.1 نیز از همان نام نان خامهای بهره میبرد. برخی از قابلیتهای اندروید 2.1 عبارتند از:
کاغذ دیواریهای زنده (Live Wallpapers):
یکی دیگر از ویژگیهای این نسخه از اندروید مجهز شدن آن به قابلیت نمایش کاغذ دیواریهای تعاملی (زنده) بود. این ایده بسیار ساده و در عین حال جذابی است که تصاویر متحرکی که قادر باشند حتی به صورت تعاملی نیز از خود واکنش نشان دهند به جای یک تصویر ثابت در پس زمینه به نمایش درآیند. گوگل برای نمایش این قابلیت، نقشه خود را به صورت کاغذ دیواری تعاملی درآورد که نظر بسیاری از کاربران را به خود جلب نمود، گرچه از نظر مصرف انرژی قدری به باتریها فشار وارد میکرد.
قابلیت تبدیل گفتار به متن:
گوگل از تواناییهای قابلیت تبدیل گفتار به متن (TTS) در سیستم عامل تلفنهمراه خود نیز بهره گرفته است و از اندروید پیراشکی، فریمورک توسعهای ویژهای برای این منظور در نظر گرفته شده بود و از این نسخه به بعد کاربران میتوانستند با گوشی خود صحبت کنند و متون به جای تایپ با صفحه کلید، به این صورت وارد میشوند. برای تسهیل این قابلیت، از اندروید 2.1 به بعد دکمه کاما در صفحهکلید مجازی با دکمه مخصوص میکروفون عوض شد، و کاربر میتوانست به سرعت با زدن بر روی این دکمه و صحبت با گوشی، متون دلخواه خویش را وارد نماید. جالب است بدانید از iOS 5 به بعد تازه این قابلیت به صفحهکلید سیستمعامل اپل اضافه شده است.
قفل جدید صفحه:
اندروید 2.0 به قفل صفحه نمایش جدیدی مجهز گردید که به کمک آن کاربر قادر بود از یک طرف گوشی را به حالت بیصدا (سایلنت) تنظیم کرده و در سوی دیگر صفحه نیز با تغییر وضعیت قفل به صفحه نمایش برسد. از این گذشته گوگل در طراحی خود از فونتهای Sans serif استفاده کرد و آن را با اعمال تغییراتی برای سیستم خود نیز شخصی سازی نمود که ماحصل این کار فونتی بسیار زیبا و مناسب بود.
اگر چه به روزرسانیهای اندروید 2.1 چندان چشمگیر نبود، ولی برای گوگل یک تغییر استراتژیک به حساب میآمد. شاید این موضوع ارتباط مستقیمی با دستکاری ظاهر اصلی اندروید و عرضه نسخههای سفارشی برای شرکای تجاری این شرکت در محصولاتشان داشته است.
گوگل کوشید تا با همکاری مستقیم با شرکت HTC محصول اختصاصی خود را روانه بازار کند، گوشی تلفن همراهی که تجربهای ناب از اندروید 2.1 باشد و هیچ دستکاری در سیستمعامل آن روی نداده باشد، و درست همان اندروید ایدهآلی باشد که در ذهن گوگل نقش بسته است.
اگر چه به روزرسانیهای اندروید 2.1 چندان چشمگیر نبود، ولی برای گوگل یک تغییر استراتژیک به حساب میآمد
بدین ترتیب بود که گوشی Nexus One متولد شد، ابزاری نازک و بدون صفحهکلید فیزیکی که به نخستین پردازندههای یک گیگاهرتزی کوآلکام (Qualcomm Snapdragon) تجهیز شده بود و دارای صفحه نمایش AMOLED با وضوح WVGA بود. این گوشی که در دوره خود یک ابزار پیشرو به حساب میآمد، توانست به یکی از گوشیهای خوش ساخت اندرویدی بدل شود.
گوگل این رویکرد خود را با گوشی Motorola Droid نیز ادامه داد. بدین ترتیب گوگل و موتورولا همکاری نزدیکی را با یکدیگر آغاز کردند گرچه این گوشی به سیستم عامل نان خامهای مجهز شده بود، اما به اندازهی Nexus One اصیل نبود.
در این گوشی تغییراتی لحاظ شده بود که در نسخهی اصلی اندروید بازار موجود نبود. از این گذشته گوگل هرگز این گوشی را به صورت مستقیم به فروش نرساند در حالی که عرضه Nexus One را شخصاً بر عهده گرفته بود.
نسخه 2.2 یا «ماست بستنی»
اندروید 2.2 معروف به ماست بستنی یا همان Froyo در اواسط سال 2010 میلادی عرضه شد. از این پس بود که مزایای پروژه Nexus خود را نشان میداد و Nexus One نخستین گوشی بود که به این سیستم عامل به روزرسانی شد.گوگل در نسخه ماست بستنی قابلیتهای بیشتری را به نمایش گذاشت. از همان ابتدا که کاربر گوشی را روشن میکند، صفحهی خانگی با طراحی جدید چشمنواز است و سه پنل سنتی اندروید (که به اندروید 1.1 باز میگردد) با پنج پنل تعویض شده است. در پایین صفحه نیز میانبرهایی به منوی کلیه برنامهها، و برنامه مرورگر وجود داشت. از این گذشته نقطههایی که در گوشههای پایینی صفحه نمایش قرار داشت، به کاربر نشان میداد که در کدامیک از این پنلها قرار دارد. جالب اینکه پوستههای سفارشی شرکتها چون HTC Sense نیز حاوی همین موارد بودند.
بخش گالری اندروید ماست بستنی به طور کامل بازطراحی شده بود و برای نخستین بار قابلیتهای سهبعدی این پلتفرم را به نمایش گذاشته بود. برای نمونه با کج کردن صفحه یا حرکت بین آلبومهای گوناگون و عکسها، انیمیشنهای با کیفیتی نمایش داده میشد.
از دیگر ویژگیهای متمایز این نسخه سیستمعامل، میتوان به پشتیبانی از نقاط دسترسی (Hotspot) و قابلیت پیشرفتهی کپی/چسباندن آن اشاره کرد. گوگل همچنین صفحه سنتی قفل PIN را در این نسخه ارائه نمود و بدین ترتیب کاربرانی که شیوه قفل الگویی اندروید (Pattern lock) را دوست نداشتند یا بنا به مقتضیات سیاستهای کاری شرکت متبوعشان لازم بود تا از شیوهای ایمنتر استفاده کنند، میتوانستند از این شیوهی سنتی بهره ببرند. از نظر کلی از نسخه 2.2 به بعد گوگل کوشید تا گوشیهای مجهز به اندروید را به گونهای آماده سازی نماید که بتوان از آن در محیطهای شرکتی به عنوان ابزار کار بهره بُرد، تا بدین ترتیب با گوشیهای بلکبری به رقابت بپردازد.
نسخه 2.3 یا «نان زنجبیلی»
حدوداً شش ماه پس از عرضه ماست یخزده بر بستر گوشی Nexus One، گوگل وارد فاز بعدی از برنامه Nexus خود شد و کوشید تا نسخه 2.3 این سیستم عامل را با نام نان زنجبیلی یا Gingerbread عرضه نماید. این مرتبه، نوبت سامسونگ بود تا با گوگل همکاری نماید. در همین راستا شرکت سامسونگ گوشی Nexus S را در خط تولید گوشی موفق Galaxy S به تولید انبوه رسانید. گر چه این گوشی از نظر فنی چندان از گوشی پیشین Nexus One سرتر نبود، اما از نظر ظاهری تفاوت زیادی با نخستین عضو خانواده نکسوس داشت و با بهره از صفحه نمایش لبه گرد و بدنه شفاف و تیره رنگ ویژهاش، طرفداران بسیاری پیدا کرد.
نان زنجبیلی از جنبههای گوناگون یک بروزرسانی کوچک به حساب میآمد ولی تعدد این تغییرات کوچک تمایزات بسیار زیادی را موجب شدند. نان زنجبیلی را میتوان حائز بیشترین تغییرات ظاهری از نسخه نان خامهای به حساب آورد. اغلب ابزارکها (ویجتها) تغییر کردهاند (بخصوص ساعت آنالوگ که عبارت Malmo از آن حذف گردید)، صفحهی خانگی و اجزای رابط کاربری از تم رنگی سبز بهرهمند شدهاند و نوار وضعیت نیز با زمینهی تیره و نوشتههای روشن، زیبایی بیشتری را از خود نشان میدهد. این تغییرات به ظاهر کوچک تاثیر بسیار بزرگی بر ظاهر این پلتفرم داشتند. نسبت به نسخههای قبلی، نان زنجبیلی تمیزتر و مدرنتر به نظر میآمد، اما در حقیقت این ترفند هوشمندانهی گوگل برای کاهش مصرف باتری بود چرا که آن همه اجزای روشن در صفحه نمایش AMOLED انرژی زیادی را طلب میکردند.
نان زنجبیلی را میتوان حائز بیشترین تغییرات ظاهری از نسخه نان خامهای به حساب آورد
اندروید 2.3 شامل ترکیبی خوب از قابلیتهای جدید ذیل بود:
کنترل بیشتر بر قابلیت کپی/چسباندن:
پشتیبانی اندروید از اقدامات مبتنی بر کلیپبورد بهبود یافته اما نسبت به سیستم عامل iOS اپل که مجهز به قابلیت انتخاب کاراکتر به کاراکتر متن بود، این توانایی هنوز در اندروید وجود نداشت. پیش از این نیز در نسخههای قبلی اندروید کاربر تنها میتوانست کل محتوای یک کادر را انتخاب و کپی نماید، که شاید همیشه اوقات به کار نمیآمد. اما بالاخره گوگل این نقیصه را در نان زنجفیلی حل کرد؛ از این نسخه به بعد شاهد قابلیت انتخاب کلمه به کلمه متون و تسهیل روند این امور هستیم. همانطور که در نسخه ماست یخزده شاهد ارتقای صفحه خانگی بودیم، این مشکل نیز پیشتر توسط شرکای سختافزاری رفع و رجوع شد و گوگل کوشید تا در نسخه جدید این قابلیت را به اندروید خام نیز بیافزاید. گفتنی است کمپانی HTC پیش از این مشکل کپی/چسباندن را در مدلهای پیشین خود رفع کرده بود.
سیستمعامل اندروید گوگل در این چهار سالی که از تولد آن گذشته، مراحل رشد و دگردیسی متعددی را پشت سر گذاشته است. از اولین تجربهی آن در گوشی G1 گرفته تا حضور در گوشیهای هوشمند و تبلتهای رنگارنگ امروزی که همه جا میتوان نشان سبز رنگ و دوستداشتنی اندروید را مشاهده کرد. بیایید به روند توسعه اندروید نگاهی بیاندازیم.
این سیستمعامل در سه سال گذشته نُه نسخه مهم را ارائه کرده است: نُه! جالب اینکه سیستمعامل ویندوز در این 25 سال تنها ده نسخه مهم را عرضه کرده است. باید این نکته را بپذیریم که در دنیای فناوری هیچ سیستمعامل یا نرمافزار کاربردی این چنین روند پرسرعتی را در تکوین، تجربه نکرده است و اندروید در مرکز این دگرگونی، سریعتر از همه بوده است. در این مقاله میخواهیم به سیستمعامل اندروید و تاریخچه آن نگاه موشکافانهتری داشته باشیم. با زومیت همراه باشید.
کیتکت
گوگل در نوامبر سال 2005 شرکتی به نام Android را خرید، شرکت کوچکی که نرم افزار برای تلفن های همراه میساخت، اما این موضوع را اعلام نکرد تا در نیمه دوم سال 2007 که رسما اعلام کرد، قرار است سیستم عامل متن باز برای تلفنهای همراه منتشر کند.
کمپانی گوگل در سال ۲۰۰۸ اولین نسخه اندروید را ارائه نمود. شاید دستاندرکاران این کمپانی در آن زمان خودشان نیز تصور نمیکردند که روزی این محصول متنباز به فراگیرترین سیستمعامل موبایل تبدیل شود. در این مقاله نگاهی تقریبا مفصل به روند توسعه اندروید خواهیم داشت و سیر تکامل قابلیتهای آن را از اولین تا آخرین نسخه آن یعنی آبنبات پاستیلی 4.2 شرح خواهیم داد. لازم به ذکر است که منبع اصلی تا نسخه 4.1 را پوشش داده بود و بخش مربوط به نسخه 4.2 توسط تیم زومیت گردآوری شده است. تلاش خواهیم کرد تا در آینده نیز با معرفی نسخههای جدید اندروید، این مقاله را بروزرسانی کنیم. پس بیایید ببینیم که چطور ایدهی کودکی اندی روبین سر از دنیای فناوری و گوشیهای تلفن همراه درآورده است.
نقطه آغاز
دوران اندروید به طور رسمی از 22 اکتبر 2008 میلادی، زمانی که گوشی T-Mobile G1 در ایالات متحده عرضه شد، آغاز گردید. در ابتدای امر، بسیاری از قابلیتهایی که نمیتوان اندروید را بدون آنها متصور بود در این گوشی وجود نداشت. برای نمونه میتوان به فقدان صفحه کلید مجازی (لمسی)، قابلیت چند لمسی، برنامههای کاربردی حرفهای و... اشاره کرد، اما همین گوشی سنگبنایی شد تا امروزه با اندرویدی چنین پیشرفته سروکار داشته باشیم.
ویژگیهای اولیه این نسخه از اندروید عبارتند از:
پنجرهی اعلانات:
گرچه این گوشی فاقد تمامی قابلیتهای اندروید امروزی است، با این حال از همان روزها نیز کادر پایینروندهی اعلانات (Notifications) را داشته است. نوار وضعیت گوشی G1 را میتوان یکی از قابلیتهای منحصر به فرد آن به شمار آورد، که کاربر میتواند آن را به پایین کشیده و از جزئیات بیشتر اطلاع حاصل کند، این موارد عبارت بودند از پیامک، پست صوتی، هشدارها و سایر اطلاعاتی از این قبیل. این امکان همچنان در نسخههای جدیدتر اندروید نیز وجود دارد.
ویجتهای صفحه خانه:
یکی از تفاوتهای عمده سیستمعامل اندروید با وجود رقبای سرسختی چون iOS یا ویندوز فون این است که این سبزک دوستداشتنی از ویجت به طرز بسیار خوبی پشتیبانی میکند. گوگل از همان روزهای آغازین برای این موضوع برنامهریزی خوبی کرده بود، گرچه در ابتدا توسعهدهندگان نرمافزاری قادر به تهیه ویجتهای مورد نظر خود نبودند!
یکپارچهسازی با سرویس پست الکترونیکی جیمیل:
زمانی که گوشی G1 عرضه شد، سرویس پستالکترونیکی جیمیل از پروتکلهای POP و IMAP برای یکپارچهسازی در ابزارهای گوناگون دیگر پشتیبانی میکرد. اما مشکل آنجا بود که هیچ یک از این پروتکلها قادر به استفاده از دو قابلیت اختصاصی جیمیل یعنی برچسبزنی و آرشیو قدرتمند آن نبودند. موردی که اندروید 1.0 توانست آن را به طرز خوبی حل و فصل نماید و یکی از بهترین تجربههای کار با جیمیل در بستر گوشیهای موبایل را فراهم آورد.
فروشگاهی به نام اندروید مارکت:
این روزها تصور یک گوشی هوشمند بدون دسترسی به یک فروشگاه متمرکز نرمافزاری غیرممکن است. این موضوع در حالی است که اندروید 1.0 فاقد چنین قابلیتی بود و ضرورت وجود چنین بازارچهای از همان زمان به خوبی حس میشد. گفتنی است گوشی G1 به همراه مجموعهای از نرمافزارهای کاربردی عرضه شد تا این که بعدها گوگل، مارکت معروف خود را تهیه و تدارک دید. یکی دیگر از نقایص اندروید در آن دوران، فقدان پشتیبانی از سیستم پرداخت بود، که یک سال بعد این مورد نیز مرتفع شد.
جالب است بدانید که رابط کاربری توسعهیافتهی گوگل برای اندروید 1.0 ماحصل همکاری آنها با شرکت سوئدی Astonishing Tribe بوده است. شرکت مزبور در زمینهی ارائهی طراحیهای چشمگیر نرمافزاری مشغول به فعالیت بود و سالهای سال رابطهای کاربری قابل توجهی را تهیه و ارائه کرد. اگر با دقت بیشتری نگاه کنید، میتوانید نشان TAT را به خوبی در این پلتفرم ملاحظه نمایید؛ به خصوص در ساعت آنالوگ که از اندروید 1.0 تا 2.2 با نشان کوچک Malmo قابل رویت بود. گفتنی است Malmo نام شهری است که این شرکت سوئدی در آن قرار داشت. بعدها این شرکت توسط کمپانی RIM خریداری شد و تمرکز اصلیاش بر توسعهی گوشیهای بلکبری و پلتفرم BBX قرار گرفت.
اندروید 1.1
نخستین بروزرسانی اندروید سه ماه پس از عرضه گوشی G1 در فوریه 2009 میلادی صورت پذیرفت. نسخه 1.1 را نمیتوان به هیچ وجه محصولی نوآورانه دانست؛ بلکه بیشتر به مثابه وصلههای نرمافزاری برای بهینهسازی سیستم و رفع باگهای آن بود. از طرف دیگر این نسخه توانایی اندروید را برای بروزرسانی بی دردسر به خوبی نشان داد. همین قابلیت پیشپا افتاده در زمان عرضه نسخهی 1.1 یکی از نقاط قوت اندروید به حساب میآمد که تا به امروز نیز همچنان ادامه دارد، چرا که سایر سیستمعاملهای موبایل فاقد قابلیت مشابهی بودند.
وقت دسر فرارسید: نسخه 1.5 یا «کیک یزدی»
بسیاری از ما اندروید 1.5 را بیشتر به نام کیکیزدی (Cupcake) میشناسیم، سیستمعاملی که حقیقتاً نقطهی عطفی در تاریخچهی اندروید به شمار میرود. در این نسخه برخی از قابلیتهای کلیدی به اندروید افزوده شد. از این گذشته اندروید 1.5 اولین نسخه از این سیستمعامل بود که از روش نامگذاری ویژهی گوگل بهرهمند گردید. از آن پس بود که هر بروزرسانی کلی با نام یکی از شیرینیجات (البته به ترتیب حروف الفبای لاتین) همراه میشد تا بر دلچسبی اندروید بیافزاید.
از جنبههای گوناگون اندروید کیک یزدی را میتوان گامی بزرگ در جهت اصلاح و بهبود این سیستم عامل دانست. هم از نظر تکنیکی-فنی و هم از منظر زیباییشناختی که رابطکاربری آن با تغییرات مثبتی همراه شد. بسیاری از این تغییرات آنچنان محسوس نبودند، برای نمونه ویجت جستجوی گوگل از این پس از ظاهری شفاف بهرهمند شد.
از جنبههای گوناگون اندروید کیک یزدی را میتوان گامی بزرگ در جهت اصلاح و بهبود این سیستم عامل دانست. هم از نظر تکنیکی-فنی و هم از منظر زیباییشناختی که رابطکاربری آن با تغییرات مثبتی همراه شد
تغییرات صورت گرفته در نسخه جدید اندروید آنچنان نامحسوس بودند که اگر کاربر یک دستگاه مجهز به اندروید 1.1 را به 1.5 ارتقا میداد، هیچ تغییر چشمگیر خاصی را احساس نمیکرد. در حالی که همه چیز از چینش متون گرفته تا سایههای نوار وضعیت همه دستخوش تغییر و دگرگونی اساسی شده بودند. و اغلب کاربران گوشی G1 بدون آنکه این تغییرات را متوجه شوند، از آنها گذشتند. البته موارد مهم ذیل غیر قابل انکار مینمود:
صفحهکلید مجازی:
شاید به نظر شما عجیب و غیرممکن برسد که گوگل اندروید خود را بدون هیچ صفحهکلید مجازی عرضه کرده باشد، اما واقعیت همین است! شاید به همین خاطر بود که آنها نخستین میزبان سختافزاری خود را گوشی G1 انتخاب کردند، چرا که این گوشی دارای یک صفحهکلید از نوع QWERTY بود که به صورت کشویی باز میشد و کاربر را قادر میساخت تا به تایپ متون بپردازد. این وضعیت تا عرضهی نسخهی کیک یزدی در آوریل 2009 میلادی (یعنی بیش از 6 ماه پس از عرضهی G1) همچنان ادامه داشت. از آن پس بود که گوگل از قابلیتهای سختافزاری گوشی HTC Magic بهره برد و نخستین گوشی را به بازار عرضه کرد که تنها دارای صفحه کلید مجازی بود.
از ارائهی صفحه کلید مجازی که بگذریم، گوگل حرکت بارز دیگری نیز صورت داد. مهندسان گوگل بالاخره موفق شدند اقدامات لازم برای پذیرش صفحهکلیدهای ثالث را میسر سازند، قابلیتی که به کمک آن میتوان صفحهکلیدی خارج از مورد پیشبینی شدهی سیستمعامل اندروید را فعال کرده و به کار گرفت. موردی که به خصوص برای کاربران سایر زبانها بسیار مورد توجه قرار گرفت. جالب است بدانید حتی امروزه نیز رقبای سرسختی چون iOS یا ویندوز فون از چنین ویژگی مهمی بیبهره هستند. متاسفانه در زمان عرضهی اندروید کیک یزدی صفحه کلید عرضه شده در این سیستم عامل نسبت به iOS از دقت و سرعت بسیار پایینی برخوردار بود. موردی که بالاخره مشارکت شرکای سختافزاری نظیر HTC را طلبید و به کمک آنها این مشکل در محصولات اختصاصی این شرکتها رفع گردید.
ویجتهای قابل توسعه:
در حالی که اندروید 1.0 و 1.1 از نظر فنی دارای قابلیت تازهای به نام ویجت یا ابزارک بودند، پتانسیل کامل آنها همچنان غیر قابل دسترس بود و شرکتهای ثالث میبایست تا عرضهی SDK مربوطه از سوی گوگل صبر بیشتری میکردند. در آن دوران تنها ابزارک موجود کادرهایی بودند که در اندروید پیشبینی شده بود. خوشبختانه این مورد با عرضهی اندروید 1.5 مرتفع شد و امروزه شاهدیم که بسیاری از نرمافزارهای ثالث از قابلیت ابزارک بهرهمند هستند. در حقیقت میتوان وجود صفحههای خانگی انعطافپذیر را یکی دیگر از خصوصیات بینظیر این سیستمعامل تلفنهای هوشمند به حساب آورد.
بهبود کلیپبورد (Clipboard):
اندروید راهی دشوار را برای دست یابی به قابلیت کپی و چسباندن (Copy & Paste) طی کرده است. از نظر تکنیکی چنین قابلیتی از روز نخست در این پلتفرم پیشبینی شده بود، اما تا حد زیادی به کادرهای متنی و لینکها محدود شده بود. بدین معنی که کاربر نمیتوانست متنهای دلخواه را از داخل پنجرهی مرورگر یا برنامهی مدیریت پستالکترونیکی جیمیل کپی نماید و اغلب اوقات این نیاز حس میشد. گرچه قابلیتهای کامل کپی و چسباندن تا سالها به برنامه جیمیل راه پیدا نکرد، از نسخه کیک یزدی پشتیبانی از این قابلیت در برنامهی مرورگر افزوده شد و بدین ترتیب کاربر میتوانست متن مورد نظر را از این برنامه بیرون بکشد.
ضبط و بازپخش ویدئویی:
این روزها تصور یک گوشی هوشمند بدون توانایی ضبط و پخش ویدئویی بسیار مشکل است، اما این وضعیتی است که کاربران گوشی G1 آن را تجربه کردهاند. گرچه کیک یزدی کوشید تا این نقیصه را رفع کند، ولی صفحهکلید اندروید و رابط ویژهای که برای بخش دوربین آن در نظر گرفته بودند خالی از اشکال نبود. موضوعی که دوباره با همت OEMها یا همان شرکای سختافزاری سریعاً رفع و رجوع شد و با ارتقای رابط کاربری، شاهد پشتیبانی خوبی از قابلیتهای لمسی گوشیها بودیم.
و قابلیتهای بیشتر:
بروزرسانی موارد جزئیتر شامل عملیاتهای دستهای در جیمیل (پیشتر کاربران نمیتوانستند چندین نامه را با هم حذف یا آرشیو نمایند)، بروزرسانی پشتیبانی از سرویسهای یوتیوب و پیکاسا و دسترسی به وضعیت کاربر در Google Talk در همه جا، برنامه پیغام رسان و غیره را میتوان از دیگر قابلیتهای این نسخه برشمرد.
نسخه 1.6 یا «پیراشکی»
گرچه اندروید 1.6 پیراشکی یا Donut به اندازهی کیک یزدی متفاوت نبود، با این حال میتوان پیراشکی را نیز نسخهای متفاوت دانست که خیلی بیشتر از آن عدد 0.1 ارتقا با کیک یزدی تفاوت داشت! در این نسخه شاهد بروز بهبودهای جزئی دیگری در کل پلتفرم هستیم که قابلیتهای جدیدی را برای کاربران به ارمغان آورد. البته بخش بزرگی از این تغییرات مربوط به مواردی بود که در پشتپرده اتفاق میافتاد. برای نمونه نخستین بار در تاریخ اندروید پشتیبانی از CDMA از این نسخه میسر گردید و بدین ترتیب شرکتهایی همچون Verizon توانستند به بازار امریکا و آسیا دست یافته و سود سرشاری را نصیب خود و گوگل کنند.
میتوان پیراشکی را نیز نسخهای متفاوت دانست که خیلی بیشتر از آن عدد 0.1 ارتقا با کیک یزدی تفاوت داشت!
از سوی دیگر یکی از مهمترین اصلاحات در این نسخه را میتوان بهیه و مستقل شدن وضوح صفحه نمایش دانست. پیراشکی برای نخستین بار موفق شد اندروید را قادر سازد تا در انواع صفحات با وضوح و نسبت نمایش گوناگون ظاهر شود، بدین ترتیب درهای بسته به روی اندروید گشوده شد تا نه تنها در گوشی هایی با صفحه نمایش 480×320 پیکسلی ظاهر شود بلکه انواع صفحات نمایش از QVGA ،HVGA و WVGA گرفته تا FWVGA ،qHD و حتی 720p را به زیر سیطره خویش کشد.
در اندروید پیراشکی قابلیت کادر جستجوی سریع نیز ارائه گردیده است، مفهومی که در دنیای رایانه از آن با عنوان «جستجوی کلی» نیز یاد میشود. پیش از پیراشکی اگر کاربر در صفحه آغازین بود، با فشردن دکمه جستجو گوشی به کادر جستجوی گوگل هدایت میشد و میتوانست از آنجا اینترنت را بکاود به گونهای که همهی جستجوها به سایت google.com هدایت میشد. از نسخه 1.6 (پیراشکی) به بعد، کاربر میتوانست بجز اینترنت حتی بخشهایی از گوشی خود را نیز به طور محلی جستجو نماید که شامل برنامهها، اطلاعات تماسها و موارد دیگری از این دست میشد. از این گذشته در پیراشکی قابلیتی تعریف شده بود که به کمک آن برنامهنویسان میتوانستند برنامهی خود را جزء موارد جستجو شوندهی محلی قرار دهند.
پیراشکی برای نخستین بار موفق شد اندروید را قادر سازد تا در انواع صفحات با وضوح و نسبت نمایش گوناگون ظاهر شود
از دیگر خصوصیات پیراشکی میتوان به طراحی مجدد فروشگاه اندروید در رنگبندی سفید و سبز معروف دانست. از این گذشته این برنامه قادر بود تا فهرستی از برترین برنامههای رایگان و قابل خریداری را نمایش دهد، موضوعی که با گسترش عرضه برنامههای ثالث بر روی این پلتفرم به خوبی نیازش حس میشد. از سویی دیگر رابطکاربری ابزار دوربین نیز تغییر کرد و بجز یکپارچگی بهتر با گالری، مشکلات شاتر آن نیز تا حد زیادی رفع شد. با این حال نتوانست آنچنان که باید و شاید ظاهر شود و همچنان ایرادات زیادی متوجه دوربین بود، موضوعی که تا اندروید 2.3 ادامه داشت.
نسخه 2.0 یا «نان خامهای»
در اوایل نوامبر 2009 میلادی، تقریباً یک سال پس از عرضه گوشی G1، اندروید 2.0 عرضه شد. «بزرگ» صفت خوبی برای توصیف نان خامهای یا Eclair گوگل بود چرا که این نسخه از سیستمعامل اندروید دستاوردی بزرگ با وعدههایی بزرگ بود که بر روی گوشیهای بزرگ کمپانیهای بزرگ عرضه میشد!
«بزرگ» صفت خوبی برای توصیف نان خامهای یا Eclair گوگل بود چرا که این نسخه از سیستمعامل اندروید دستاوردی بزرگ با وعدههایی بزرگ بود که بر روی گوشیهای بزرگ کمپانیهای بزرگ عرضه میشد!
در ابتدا نان خامهای به صورت اختصاصی بر روی گوشیهای Verizon عرضه شد و یکی از بهترین تجربههای همکاری در این زمینه را رقم زد. اما چه عواملی موجب شد تا نان خامهای این چنین موفق باشد؟ در این نسخه بیشترین تغییرات بر روی سیستمعامل گوگل هم از نظر بصری و هم معماری داخلی صورت گرفت.
در ذیل برخی از مهمترین این تغییرات را برشمردهایم:
پشتیبانی از حسابهای چندگانه:
برای نخستین بار کاربران قادر بودند تا حسابهای چندگانهی خود در گوگل را در یک ابزار واحد وارد کنند و با وجود جداسازی موارد کاری و شخصی از آن به خوبی بهره ببرند. از این پس کاربران میتوانستند چندین حساب پست الکترونیکی خود نزد جیمیل را چک کرده و از قابلیت پشتیبانی از تبادل حسابها بهرهمند شوند.
از این گذشته نان خامهای این امکان را به شرکتهای ثالث میداد تا ابزار لازم برای استفاده از این قابلیتها را داشته باشند و از روند همگامسازی خودکار بهره ببرند. یکی از مزیتهای کلیدی اشتراکگذاری اطلاعات بین حساب شما و برنامهی تماسهای گوشی بود، بدین ترتیب میشد با یک حرکت، کلیه اطلاعات تماس موجود در حساب کاربری را در گوشی نیز داشته باشیم. فیسبوک یکی از نخستین شرکتهایی بود که این قابلیت را مغتنم شمرد و از آن استفاده کرد.
برنامهی رایگان ناوبری به همراه اندروید 2.0 عرضه شد که از اطلاعات نقشه گوگل برای راهنمایی و هدایت کاربر استفاده میکرد.
قابلیت ناوبری نقشه گوگل:
این مورد یکی از مهمترین ویژگیهای اندروید نان خامهای بود که همچنان محبوب است. این برنامهی رایگان ناوبری به همراه اندروید 2.0 عرضه شد که از اطلاعات نقشه گوگل برای راهنمایی و هدایت کاربر استفاده میکرد. این برنامه مجهز به بسیاری از قابلیتهایی بود که از یک برنامه ناوبری خودرو انتظار میرود! نمایش نمایی سهبعدی مسیر پیش رو، راهنمای صوتی (شامل نام خیابانها) و اطلاعات ترافیکی مسیر.
پیش از این رانندگان میبایست هزینهی سنگین اشتراک ماهانه یا خریداری کلی یک برنامه اینچنینی را میپرداختند. البته نسخههای اولیه خالی از اشکال نبود و از آنجایی که قادر به کش کردن اطلاعات نبود، نیازمند اتصال دائمی به شبکه اینترنت داشت. البته ایرادات برنامه به مرور مرتفع شدند و گوگل این امکان رایگان را برای کاربران هدیه کرد.
دسترسی سریع به اطلاعات تماس:
از اندروید کیک یزدی به بعد دسترسی اطلاعات تماس سرویس Google Talk در تمامی گوشیها میسر شد و در نسخه نان خامهای نیز قابلیت تازهی افزودن نوار دسترسی سریع به اطلاعات تماس ارائه گردید. بدین ترتیب کاربر قادر بود تا برای رفع نیازهای مختلفی از قبیل ایمیل، پیامک، تماس تلفنی و غیره به این موارد دسترسی داشته باشد.
ارتقای صفحه کلید مجازی:
گوشی Droid نیز همچون گوشی D1 دارای یک صفحه کلید فیزیکی QWERTY بود و گوگل میکوشید تا در کنار وجود چنین سختافزاری از نظر نرمافزاری نیز صفحه کلید مجازی مناسبی را برای سیستم عامل خود مهیا سازد. از آنجایی که قابلیت چند لمسی هنوز در همه جای این پلتفرم پشتیبانی نمیشد، کار کردن در برنامههای مرورگر و نقشه قدری دشوار بود. به همین خاطر از نان خامهای به بعد تشخیص دادههای چند لمسی از طریق صفحهکلید میسر گردید و بر دقت و سرعت تایپ دادههای ورودی افزوده شد.
بازسازی برنامه مرورگر:
همانطور که پیشتر ذکر آن رفت، مرورگر اندروید نان خامهای با وجود پیشرفت در زمینههای گوناگون، هنوز از قابلیت بزرگنمایی چند لمسی پشتیبانی نمیکرد. از آنجایی که اندروید 2.0 بر روی دستگاهی عرضه میشد که دارای صفحه نمایش WVGA بود، لازم بود تا مرورگر قادر به نمایش درست اطلاعات سایتهای اینترنتی باشد. به همین خاطر، گوگل پشتیبانی از زبان HTML5 و تصاویر ویدئویی را به آن اضافه کرد. از سوی دیگر در این نسخه از اندروید بود که برنامه مرورگر مجهز به نوار نشانی شد و شباهت بسیار بالایی به مرورگر اینترنت گوگل کروم پیدا کرد. همچنین برای رفع مشکل چند لمسی، در این نسخه از مرورگر قابلیت بزرگنمایی با دو بار ضربه زدن بر روی صفحه میسر شد، که جایگزین خوبی برای بزرگنمایی و کوچکنمایی سریع در برنامه به حساب میآمد.
نسخه 2.1 با همان نام «نان خامهای»
تغییرات گسترده دیگری در نسخه 2.1 اندروید صورت گرفت. این نسخه از سیستم عامل گوگل آنچنان در زمان خود خوب بود که بسیاری از گوشیهای جدید به آن مجهز شدند. از این گذشته بسیاری از ایرادات نرمافزاری دیگر نیز در این نسخه رفع گردیدند، با این حال همانند اندروید 2.0 نسخه 2.1 نیز از همان نام نان خامهای بهره میبرد. برخی از قابلیتهای اندروید 2.1 عبارتند از:
کاغذ دیواریهای زنده (Live Wallpapers):
یکی دیگر از ویژگیهای این نسخه از اندروید مجهز شدن آن به قابلیت نمایش کاغذ دیواریهای تعاملی (زنده) بود. این ایده بسیار ساده و در عین حال جذابی است که تصاویر متحرکی که قادر باشند حتی به صورت تعاملی نیز از خود واکنش نشان دهند به جای یک تصویر ثابت در پس زمینه به نمایش درآیند. گوگل برای نمایش این قابلیت، نقشه خود را به صورت کاغذ دیواری تعاملی درآورد که نظر بسیاری از کاربران را به خود جلب نمود، گرچه از نظر مصرف انرژی قدری به باتریها فشار وارد میکرد.
قابلیت تبدیل گفتار به متن:
گوگل از تواناییهای قابلیت تبدیل گفتار به متن (TTS) در سیستم عامل تلفنهمراه خود نیز بهره گرفته است و از اندروید پیراشکی، فریمورک توسعهای ویژهای برای این منظور در نظر گرفته شده بود و از این نسخه به بعد کاربران میتوانستند با گوشی خود صحبت کنند و متون به جای تایپ با صفحه کلید، به این صورت وارد میشوند. برای تسهیل این قابلیت، از اندروید 2.1 به بعد دکمه کاما در صفحهکلید مجازی با دکمه مخصوص میکروفون عوض شد، و کاربر میتوانست به سرعت با زدن بر روی این دکمه و صحبت با گوشی، متون دلخواه خویش را وارد نماید. جالب است بدانید از iOS 5 به بعد تازه این قابلیت به صفحهکلید سیستمعامل اپل اضافه شده است.
قفل جدید صفحه:
اندروید 2.0 به قفل صفحه نمایش جدیدی مجهز گردید که به کمک آن کاربر قادر بود از یک طرف گوشی را به حالت بیصدا (سایلنت) تنظیم کرده و در سوی دیگر صفحه نیز با تغییر وضعیت قفل به صفحه نمایش برسد. از این گذشته گوگل در طراحی خود از فونتهای Sans serif استفاده کرد و آن را با اعمال تغییراتی برای سیستم خود نیز شخصی سازی نمود که ماحصل این کار فونتی بسیار زیبا و مناسب بود.
اگر چه به روزرسانیهای اندروید 2.1 چندان چشمگیر نبود، ولی برای گوگل یک تغییر استراتژیک به حساب میآمد. شاید این موضوع ارتباط مستقیمی با دستکاری ظاهر اصلی اندروید و عرضه نسخههای سفارشی برای شرکای تجاری این شرکت در محصولاتشان داشته است.
گوگل کوشید تا با همکاری مستقیم با شرکت HTC محصول اختصاصی خود را روانه بازار کند، گوشی تلفن همراهی که تجربهای ناب از اندروید 2.1 باشد و هیچ دستکاری در سیستمعامل آن روی نداده باشد، و درست همان اندروید ایدهآلی باشد که در ذهن گوگل نقش بسته است.
اگر چه به روزرسانیهای اندروید 2.1 چندان چشمگیر نبود، ولی برای گوگل یک تغییر استراتژیک به حساب میآمد
بدین ترتیب بود که گوشی Nexus One متولد شد، ابزاری نازک و بدون صفحهکلید فیزیکی که به نخستین پردازندههای یک گیگاهرتزی کوآلکام (Qualcomm Snapdragon) تجهیز شده بود و دارای صفحه نمایش AMOLED با وضوح WVGA بود. این گوشی که در دوره خود یک ابزار پیشرو به حساب میآمد، توانست به یکی از گوشیهای خوش ساخت اندرویدی بدل شود.
گوگل این رویکرد خود را با گوشی Motorola Droid نیز ادامه داد. بدین ترتیب گوگل و موتورولا همکاری نزدیکی را با یکدیگر آغاز کردند گرچه این گوشی به سیستم عامل نان خامهای مجهز شده بود، اما به اندازهی Nexus One اصیل نبود.
در این گوشی تغییراتی لحاظ شده بود که در نسخهی اصلی اندروید بازار موجود نبود. از این گذشته گوگل هرگز این گوشی را به صورت مستقیم به فروش نرساند در حالی که عرضه Nexus One را شخصاً بر عهده گرفته بود.
نسخه 2.2 یا «ماست بستنی»
اندروید 2.2 معروف به ماست بستنی یا همان Froyo در اواسط سال 2010 میلادی عرضه شد. از این پس بود که مزایای پروژه Nexus خود را نشان میداد و Nexus One نخستین گوشی بود که به این سیستم عامل به روزرسانی شد.گوگل در نسخه ماست بستنی قابلیتهای بیشتری را به نمایش گذاشت. از همان ابتدا که کاربر گوشی را روشن میکند، صفحهی خانگی با طراحی جدید چشمنواز است و سه پنل سنتی اندروید (که به اندروید 1.1 باز میگردد) با پنج پنل تعویض شده است. در پایین صفحه نیز میانبرهایی به منوی کلیه برنامهها، و برنامه مرورگر وجود داشت. از این گذشته نقطههایی که در گوشههای پایینی صفحه نمایش قرار داشت، به کاربر نشان میداد که در کدامیک از این پنلها قرار دارد. جالب اینکه پوستههای سفارشی شرکتها چون HTC Sense نیز حاوی همین موارد بودند.
بخش گالری اندروید ماست بستنی به طور کامل بازطراحی شده بود و برای نخستین بار قابلیتهای سهبعدی این پلتفرم را به نمایش گذاشته بود. برای نمونه با کج کردن صفحه یا حرکت بین آلبومهای گوناگون و عکسها، انیمیشنهای با کیفیتی نمایش داده میشد.
از دیگر ویژگیهای متمایز این نسخه سیستمعامل، میتوان به پشتیبانی از نقاط دسترسی (Hotspot) و قابلیت پیشرفتهی کپی/چسباندن آن اشاره کرد. گوگل همچنین صفحه سنتی قفل PIN را در این نسخه ارائه نمود و بدین ترتیب کاربرانی که شیوه قفل الگویی اندروید (Pattern lock) را دوست نداشتند یا بنا به مقتضیات سیاستهای کاری شرکت متبوعشان لازم بود تا از شیوهای ایمنتر استفاده کنند، میتوانستند از این شیوهی سنتی بهره ببرند. از نظر کلی از نسخه 2.2 به بعد گوگل کوشید تا گوشیهای مجهز به اندروید را به گونهای آماده سازی نماید که بتوان از آن در محیطهای شرکتی به عنوان ابزار کار بهره بُرد، تا بدین ترتیب با گوشیهای بلکبری به رقابت بپردازد.
نسخه 2.3 یا «نان زنجبیلی»
حدوداً شش ماه پس از عرضه ماست یخزده بر بستر گوشی Nexus One، گوگل وارد فاز بعدی از برنامه Nexus خود شد و کوشید تا نسخه 2.3 این سیستم عامل را با نام نان زنجبیلی یا Gingerbread عرضه نماید. این مرتبه، نوبت سامسونگ بود تا با گوگل همکاری نماید. در همین راستا شرکت سامسونگ گوشی Nexus S را در خط تولید گوشی موفق Galaxy S به تولید انبوه رسانید. گر چه این گوشی از نظر فنی چندان از گوشی پیشین Nexus One سرتر نبود، اما از نظر ظاهری تفاوت زیادی با نخستین عضو خانواده نکسوس داشت و با بهره از صفحه نمایش لبه گرد و بدنه شفاف و تیره رنگ ویژهاش، طرفداران بسیاری پیدا کرد.
نان زنجبیلی از جنبههای گوناگون یک بروزرسانی کوچک به حساب میآمد ولی تعدد این تغییرات کوچک تمایزات بسیار زیادی را موجب شدند. نان زنجبیلی را میتوان حائز بیشترین تغییرات ظاهری از نسخه نان خامهای به حساب آورد. اغلب ابزارکها (ویجتها) تغییر کردهاند (بخصوص ساعت آنالوگ که عبارت Malmo از آن حذف گردید)، صفحهی خانگی و اجزای رابط کاربری از تم رنگی سبز بهرهمند شدهاند و نوار وضعیت نیز با زمینهی تیره و نوشتههای روشن، زیبایی بیشتری را از خود نشان میدهد. این تغییرات به ظاهر کوچک تاثیر بسیار بزرگی بر ظاهر این پلتفرم داشتند. نسبت به نسخههای قبلی، نان زنجبیلی تمیزتر و مدرنتر به نظر میآمد، اما در حقیقت این ترفند هوشمندانهی گوگل برای کاهش مصرف باتری بود چرا که آن همه اجزای روشن در صفحه نمایش AMOLED انرژی زیادی را طلب میکردند.
نان زنجبیلی را میتوان حائز بیشترین تغییرات ظاهری از نسخه نان خامهای به حساب آورد
اندروید 2.3 شامل ترکیبی خوب از قابلیتهای جدید ذیل بود:
کنترل بیشتر بر قابلیت کپی/چسباندن:
پشتیبانی اندروید از اقدامات مبتنی بر کلیپبورد بهبود یافته اما نسبت به سیستم عامل iOS اپل که مجهز به قابلیت انتخاب کاراکتر به کاراکتر متن بود، این توانایی هنوز در اندروید وجود نداشت. پیش از این نیز در نسخههای قبلی اندروید کاربر تنها میتوانست کل محتوای یک کادر را انتخاب و کپی نماید، که شاید همیشه اوقات به کار نمیآمد. اما بالاخره گوگل این نقیصه را در نان زنجفیلی حل کرد؛ از این نسخه به بعد شاهد قابلیت انتخاب کلمه به کلمه متون و تسهیل روند این امور هستیم. همانطور که در نسخه ماست یخزده شاهد ارتقای صفحه خانگی بودیم، این مشکل نیز پیشتر توسط شرکای سختافزاری رفع و رجوع شد و گوگل کوشید تا در نسخه جدید این قابلیت را به اندروید خام نیز بیافزاید. گفتنی است کمپانی HTC پیش از این مشکل کپی/چسباندن را در مدلهای پیشین خود رفع کرده بود.
خط مشی جاوا
یکی از ویژگیهای جاوا قابل حمل بودن آن است. یعنی برنامهٔ نوشته شده به زبان جاوا باید به طور مشابهی در کامپیوترهای مختلف با سختافزارهای متفاوت اجرا شود. و باید این توانایی را داشته باشد که برنامه یک بار نوشته شود، یک بار کامپایل شود و در همه کامپیوترها اجرا گردد. به این صورت که کد کامپایل شدهٔ جاوا را ذخیره میکند، اما نه بهصورت کد ماشین بلکه بهصورت بایتکد جاوا. دستورالعملها شبیه کد ماشین هستند، اما با ماشینهای مجازی که به طور خاص برای سختافزارهای مختلف نوشته شدهاند، اجرا میشوند. در نهایت کاربر از سکوی جاوا نصب شده روی ماشین خود یا مرورگر وب استفاده میکند. کتابخانههای استاندارد یک راه عمومی برای دسترسی به ویژگیهای خاص فراهم میکنند. مانند گرافیک، نخکشی و شبکه. در بعضی از نسخههای ماشین مجازی جاوا، بایتکدها میتوانند قبل و در زمان اجرای برنامه به کدهای محلی کامپایل شوند. فایدهٔ اصلی استفاده از بایتکد، قسمت کردن است. اما ترجمهٔ کلی یعنی برنامههای ترجمه شده تقریباً همیشه کندتر از برنامههای کامپایل شدهٔ محلی اجرا میشوند. این شکاف میتواند با چند تکنیک خوشبینانه که در کاربردهای JVM قبلی معرفی شد، کم شود. یکی از این تکنیکها JIT است که بایتکد جاوا را به کد محلی ترجمه کرده و سپس آن را پنهان میکند. در نتیجه برنامه خیلی سریعتر نسبت به کدهای ترجمه شدهٔ خالص شروع و اجرا میشود. بیشتر VMهای پیشرفته، بهصورت کامپایل مجدد پویا، در آنالیز VM، رفتار برنامهٔ اجرا شده و کامپایل مجدد انتخاب شده و بهینهسازی قسمتهای برنامه، استفاده میشوند. کامپایل مجدد پویا میتواند کامپایل ایستا را بهینهسازی کند. زیرا میتواند قسمت hot spot برنامه و گاهی حلقههای داخلی که ممکن است زمان اجرای برنامه را افزایش دهند را تشخیص دهد. کامپایل JIT و کامپایل مجدد پویا به برنامههای جاوا اجازه میدهد که سرعت اجرای کدهای محلی بدون از دست دادن قابلیت انتقال افزایش پیدا کند.
تکنیک بعدی به عنوان کامپایل ایستا شناخته شدهاست. که کامپایل مستقیم به کدهای محلی است مانند بسیاری از کامپایلرهای قدیمی. کامپایلر ایستای جاوا، بایتکدها را به کدهای شی محلی ترجمه میکند.
کارایی جاوا نسبت به نسخههای اولیه بیشتر شد. در تعدادی از تستها نشان داده شد که کارایی کامپایلرJIT کاملاًَ مشابه کامپایلر محلی شد. عملکرد کامپایلرها لزوماً کارایی کدهای کامپایل شده را نشان نمیدهند. یکی از پیشرفتهای بی نظیر در در زمان اجرای ماشین این بود که خطاها ماشین را دچار اشکال نمیکردند. علاوه بر این در زمان اجرای ماشینی مانند جاوا وسایلی وجود دارد که به زمان اجرای ماشین متصل شده و هر زمانی که یک استثنا رخ میدهد، اطلاعات اشکال زدایی که در حافظه وجود دارد، ثبت میکنند.
پیادهسازی
شرکت سان میکروسیستم مجوز رسمی برای پلت فرم استاندارد جاوا را به مایکروسافت ویندوز, لینوکس، و سولاریس (سیستمعامل). دادهاست. همچنین محیطهای دیگری برای دیگر پلت فرمها فراهم آوردهاست. علامت تجاری مجوز شرکت سان میکروسیستم طوری بود که با همهٔ پیادهسازیها سازگار باشد. به علت اختلاف قانونی که با ماکروسافت پیدا کرد، زمانی که شرکت سان ادعا کرد که پیادهسازی ماکروسافت از RMI یا JNI پشتیبانی نکرده و ویژگیهای خاصی را برای خودش اضافه کردهاست. شرکت سان در سال ۱۹۹۷ پیگیری قانونی کرد و در سال ۲۰۰۱ در توافقی ۲۰ میلیون دلاری برنده شد. در نتیجه کمی بعدماکروسافت جاوا را به ویندوز فرستاد. در نسخهٔ اخیر ویندوز، مرورگر اینترنت نمیتواند از جاوا پلت فرم پشتیبانی کند. شرکت سان و دیگران یک سیستم اجرای جاوای رایگان برای آنها و نسخههای دیگر ویندوز فراهم آوردند.
اداره خودکار حافظه
جاوا از حافظهٔ بازیافتی خودکار برای ادارهٔ حافظه در چرخهٔ زندگی یک شی استفاده میکند. برنامهنویس زمانی که اشیا به وجود میآیند، این حافظه را تعیین میکند. و در زمان اجرا نیز، زمانی که این اشیا در استفادهٔ زیاد طولانی نباشند، برنامه نویس مسئول بازگرداندن این حافظهاست. زمانی که مرجعی برای شیهای باقیمانده نیست، شیهای غیر قابل دسترس برای آزاد شدن به صورت خودکار توسط بازیافت حافظه، انتخاب میشوند. اگر برنامهنویس مقداری از حافظه را برای شیهایی که زیاد طولانی نیستند، نگه دارد، چیزهایی شبیه سوراخ حافظه اتفاق میافتند.
یکی از عقایدی که پشت سر مدل ادارهٔ حافظهٔ خودکار جاوا وجود دارد، این است که برنامهنویس هزینهٔ اجرای ادارهٔ دستی حافظه را نادیده میگیرد. در بعضی از زبانها حافظه لازم برای ایجاد یک شی، به صورت ضمنی و بدون شرط، به پشته تخصیص داده میشود. و یا بهطور صریح اختصاص داده شده و از heap بازگردانده میشود. در هر کدام از این راهها، مسئولیت ادارهٔ اقامت حافظه با برنامهنویس است. اگر برنامه شی را برنگرداند، سوراخ حافظه اتفاق میافتد. اگر برنامه تلاش کند به حافظهای را که هماکنون بازگردانده شده، دستیابی پیدا کند یا برگرداند، نتیجه تعریف شده نیست و ممکن است برنامه بیثبات شده و یا تخریب شود. این ممکن است با استفاده از اشارهگر مدتی باقی بماند، اما سرباری و پیچیدگی برنامه زیاد میشود. بازیافت حافظه اجازه دارد در هر زمانی اتفاق بیفتد. بهطوری که این زمانی اتفاق میافتد که برنامه بیکار باشد. اگر حافظهٔ خالی کافی برای تخصیص شی جدید در هیپ وجود نداشته باشد، ممکن است برنامه برای چند دقیقه متوقف شود. در جایی که زمان پاسخ یا اجرا مهم باشد، ادارهٔ حافظه و منابع اشیا استفاده میشوند.
جاوا از نوع اشارهگر ریاضی C و ++C پشتیبانی نمیکند. در جایی که آدرس اشیا و اعداد صحیح میتوانند به جای هم استفاده شوند. همانند ++C و بعضی زبانهای شیگرای دیگر، متغیرهای نوعهای اولیهٔ جاوا شیگرا نبودند. مقدار نوعهای اولیه، مستقیماً در فیلدها ذخیره میشوند. در فیلدها (برای اشیا) و در پشته (برای توابع)، بیشتر از هیپ استفاده میشود. این یک تصمیم هوشیارانه توسط طراح جاوا برای اجرا است. به همین دلیل جاوا یک زبان شیگرای خالص به حساب نمیآید.
گرامر
گرامر جاوا وسیعتر از ++C است و برخلاف ++C که ترکیبی است از ساختارها و شیگرایی، زبان جاوا یک زبان شیگرای خالص میباشد. فقط نوع دادة اصلی از این قاعده مستثنی است. جاوا بسیاری از ویژگیها را پشتیبانی میکند و از کلاسها برای سادهتر کردن برنامهنویسی و کاهش خطا استفاده میکند.
بر طبق قرارداد فایل هل بعد از کلاسهای عمومی نام گذاری میشوند. سپس باید پسوند java را به این صورت اضافه کرد: Hello world.java. این فایل اول باید با استفاده از کامپایلر جاوا به بایت کد کامپایل شود. در نتیجه فایل Hello world.class ایجاد میشود. این فایل قابل اجرا است. فایل جاوا ممکن است فقط یک کلاس عمومی داشته باشد. اما میتواند شامل چندین کلاس با دستیابی عمومی کمتر باشد.
کلاسی که به صورت خصوصی تعریف میشود ممکن است در فایل.java ذخیره شود. کامپایلر برای هر کلاسی که در فایل اصلی تعریف میشود یک کلاس فایل تولید میکند. که نام این کلاس فایل همنام کلاس است با پسوند.class
کلمه کلیدی public (عمومی) برای قسمتهایی که میتوانند از کدهای کلاسهای دیگر صدا زده بشوند، به کار برده میشود. کلمهٔ کلیدی static (ایستا) در جلوی یک تابع، یک تابع ایستا را که فقط وابسته به کلاس است و نه قابل استفاده برای نمونههایی از کلاس، نشان میدهد. فقط تابعهای ایستا میتوانند توسط اشیا بدون مرجع صدا زده شوند. دادههای ایستا به متغیرهایی که ایستا نیستند، نمیتوانند دسترسی داشته باشند.
کلمهٔ کلیدی void (تهی) نشان میدهد که تابع main هیچ مقداری را بر نمیگرداند. اگر برنامهٔ جاوا بخواهد با خطا از برنامه خارج شود، باید system.exit() صدا زده شود. کلمهٔ main یک کلمهٔ کلیدی در زبان جاوا نیست. این نام واقعی تابعی است که جاوا برای فرستادن کنترل به برنامه، صدا میزند. برنامه جاوا ممکن است شامل چندین کلاس باشد که هر کدام دارای تابع main هستند.
تابع main باید آرایهای از اشیا رشتهای را بپذیرد. تابع main میتواند از آرگومانهای متغیر به شکل public static void main(string…args) استفاده کند که به تابع main اجازه میدهد اعدادی دلخواه از اشیا رشتهای را فراخوانی کند. پارامترstring[]args آرایهای از اشیا رشته ایست که شامل تمام آرگومانهایی که به کلاس فرستاده میشود، است.
چاپ کردن، قسمتی از کتابخانهٔ استاندارد جاوا است. کلاس سیستم یک فیلد استاتیک عمومی به نام out تعریف کردهاست. شی out یک نمونه از کلاس printstream است و شامل تعداد زیادی تابع برای چاپ کردن اطلاعات در خروجی استاندارد است. همچنین شامل println(string) برای اضافه کردن یک خط جدید برای رشتهٔ فرستاده شده اضافه میکند.
توزیعهای جاوا
منظور از توزیع جاوا پیادهسازیهای مختلفی است که برای کامپایلر جاوا و همچنین مجموعه کتابخانههای استاندارد زبان جاوا (JDK) وجود دارد. در حال حاضر چهار توزیعکنندهٔ عمده جاوا وجود دارند:
سان میکروسیستمز: توزیع کننده اصلی جاوا و مبدع آن میباشد. در اکثر موارد هنگامی که گفته میشود جاوا منظور توزیع سان میباشد.
GNU Classpath: این توزیع از سوی موسسه نرمافزارهای آزاد منتشر شده و تقریباً تمامی کتابخانه استاندارد زبان جاوا در آن بدون بهرهگیری از توزیع شرکت سان از اول پیادهسازی شدهاست. یک کامپایلر به نام GNU Compiler for Java نیز برای کامپایل کردن کدهای جاوا توسط این موسسه ایجاد شدهاست. فلسفه انتخاب نام Classpath برای این پروژه رها کردن تکنولوژی جاوا از وابستگی به علامت تجاری جاوا است بطوریکه هیچ وابستگی یا محدودیتی برای استفاده آن از لحاظ قوانین حقوقی ایجاد نشود و از طرفی به خاطر وجود متغیر محیطی classpath در تمامی محیطهای احرایی برنامههای جاوا، این نام به نوعی تکنولوژی جاوا را برای خواننده القا میکند. کامپایلر GNU توانایی ایجاد کد اجرایی (در مقابل بایت کد توزیع سان) را داراست. لازم به ذکر است که در حال حاضر شرکت سان تقریباً تمامی کدهای JDK را تحت مجوز نرمافزارهای آزاد به صورت متن باز منتشر کردهاست و قول انتشار قسمت بسیار کوچکی از این مجموعه را که بهدلیل استفاده از کدهای شرکتهای ثانویه نتوانسته به صورت متن باز منتشر نماید در آینده نزدیک با بازنویسی این کدها دادهاست.
مایکروسافت #J: این در حقیقت یک توزیع جاوا نیست. بلکه زبانی مشابه میباشد که توسط مایکروسافت و در چارچوب.net ارائه شدهاست. انتظار اینکه در سیستمعاملی غیر از ویندوز هم اجرا شود را نداشته باشید.
AspectJ: این نیز یک زبان مجزا نیست. بلکه یک برنامه الحاقی میباشد که امکان برنامه نویسی Aspect Oriented را به جاوا میافزاید. این برنامه توسط بنیاد برنامهنویسی جلوهگرا و به صورت کدباز ارائه شدهاست.
کلاسهای خاص
برنامک (برنامههای کاربردی کوچک)
اپلت جاواها برنامههایی هستند که برای کاربردهایی نظیر نمایش در صفحات وب، ایجاد شدهاند. واژهٔ import باعث میشود کامپایلر جاوا کلاسهای javaapplet.Applet وjava.awt.Graphics را به کامپایل برنامه اضافه کند. کلاس Hello کلاس Applet را توسعه میدهد. کلاس اپلت چارچوبی برای کاربردهای گروهی برای نمایش و کنترل چرخهٔ زندگی اپلت، درست میکند. کلاس اپلت یک تابع پنجرهای مجرد است که برنامههای کوچکی با قابلیت نشان دادن واسط گرافیکی برای کاربر را فراهم میکند. کلاس Hello تابع موروثی print(Graphics) را از سوپر کلاس container باطل میکند، برای اینکه کدی که اپلت را نمایش میدهد، فراهم کند. تابع paint شیهای گرافیکی را که شامل زمینههای گرافیکی هستند را میفرستد تا برای نمایش اپلتها استفاده شوند. تابع paint برای نمایش "Hello world!" تابع drawstring(string,int,int) را صدا میزند.
جاوا سرولت
تکنولوژی servlet جاوا گسترس وب را به آسانی فراهم میکند. و شامل مکانیزمهایی برای توسعهٔ تابعی سرور وب و برایدسترسی به سیستمهای تجاری موجود است.servlet قسمتی از javaEE است که به درخواستهای مشتری پاسخ میدهد.
واژهٔ import کامپایلر جاوا را هدایت میکند که تمام کلاسهای عمومی و واسطها را از بستههای java.io وjava.servlet را در کامپایل وارد کند.
کلاس Hello کلاس Genericservlet را توسعه میدهد. کلاس Genericservlet واسطی برای سرور فراهم میکند تا درخواست را به servlet بفرستد و چرخهٔ زندگی servlet را کنترل کند.
JSP
صفحهٔ سرور جاوا قسمتی از سرور javaEE است که پاسخ تولید میکند. نوعاً صفحات HTML به درخواستهای HTTP از مشتری.JSPها کد جاوا در صفحهٔ HTML را با استفاده از حائل <%and%> اضافه میکنند.JSP به javaservlet کامپایل میشود.
سوینگ
Swing کتابخانهٔ واسط گرافیکی کاربر است برای پلت فرم javaSE. ابزاری مشابه پنجره، GTK و motif توسط شرکت sun فراهم شدهاند. این مثال کاربرد swing یک پنجرهٔ واحد همراه با Hello world را ایجاد میکند.
اولین جملهٔ import کامپایلر جاوا را هدایت میکندتا کلاس Borderlayout را از بستهٔ java.awt در جاوا به کامپایل اضافه کند. و import دوم همهٔ کلاسهای عمومی و واسط آنها را از بستهٔ javax.swing اضافه میکند. کلاس Hello کلاس Jframe را توسعه میدهد. کلاس Jframe یک پنجره با میلهٔ عنوان و کنترل بستن است.
زمانی که برنامه آغاز میشود، تابع main با JVM صدا زده میشود. این یک نمونهٔ جدید از کلاس Hello را ایجاد کرده و با صدا زدن تابع setvisible(boolean) با مقدار true نمایش داده میشود.
یکی از ویژگیهای جاوا قابل حمل بودن آن است. یعنی برنامهٔ نوشته شده به زبان جاوا باید به طور مشابهی در کامپیوترهای مختلف با سختافزارهای متفاوت اجرا شود. و باید این توانایی را داشته باشد که برنامه یک بار نوشته شود، یک بار کامپایل شود و در همه کامپیوترها اجرا گردد. به این صورت که کد کامپایل شدهٔ جاوا را ذخیره میکند، اما نه بهصورت کد ماشین بلکه بهصورت بایتکد جاوا. دستورالعملها شبیه کد ماشین هستند، اما با ماشینهای مجازی که به طور خاص برای سختافزارهای مختلف نوشته شدهاند، اجرا میشوند. در نهایت کاربر از سکوی جاوا نصب شده روی ماشین خود یا مرورگر وب استفاده میکند. کتابخانههای استاندارد یک راه عمومی برای دسترسی به ویژگیهای خاص فراهم میکنند. مانند گرافیک، نخکشی و شبکه. در بعضی از نسخههای ماشین مجازی جاوا، بایتکدها میتوانند قبل و در زمان اجرای برنامه به کدهای محلی کامپایل شوند. فایدهٔ اصلی استفاده از بایتکد، قسمت کردن است. اما ترجمهٔ کلی یعنی برنامههای ترجمه شده تقریباً همیشه کندتر از برنامههای کامپایل شدهٔ محلی اجرا میشوند. این شکاف میتواند با چند تکنیک خوشبینانه که در کاربردهای JVM قبلی معرفی شد، کم شود. یکی از این تکنیکها JIT است که بایتکد جاوا را به کد محلی ترجمه کرده و سپس آن را پنهان میکند. در نتیجه برنامه خیلی سریعتر نسبت به کدهای ترجمه شدهٔ خالص شروع و اجرا میشود. بیشتر VMهای پیشرفته، بهصورت کامپایل مجدد پویا، در آنالیز VM، رفتار برنامهٔ اجرا شده و کامپایل مجدد انتخاب شده و بهینهسازی قسمتهای برنامه، استفاده میشوند. کامپایل مجدد پویا میتواند کامپایل ایستا را بهینهسازی کند. زیرا میتواند قسمت hot spot برنامه و گاهی حلقههای داخلی که ممکن است زمان اجرای برنامه را افزایش دهند را تشخیص دهد. کامپایل JIT و کامپایل مجدد پویا به برنامههای جاوا اجازه میدهد که سرعت اجرای کدهای محلی بدون از دست دادن قابلیت انتقال افزایش پیدا کند.
تکنیک بعدی به عنوان کامپایل ایستا شناخته شدهاست. که کامپایل مستقیم به کدهای محلی است مانند بسیاری از کامپایلرهای قدیمی. کامپایلر ایستای جاوا، بایتکدها را به کدهای شی محلی ترجمه میکند.
کارایی جاوا نسبت به نسخههای اولیه بیشتر شد. در تعدادی از تستها نشان داده شد که کارایی کامپایلرJIT کاملاًَ مشابه کامپایلر محلی شد. عملکرد کامپایلرها لزوماً کارایی کدهای کامپایل شده را نشان نمیدهند. یکی از پیشرفتهای بی نظیر در در زمان اجرای ماشین این بود که خطاها ماشین را دچار اشکال نمیکردند. علاوه بر این در زمان اجرای ماشینی مانند جاوا وسایلی وجود دارد که به زمان اجرای ماشین متصل شده و هر زمانی که یک استثنا رخ میدهد، اطلاعات اشکال زدایی که در حافظه وجود دارد، ثبت میکنند.
پیادهسازی
شرکت سان میکروسیستم مجوز رسمی برای پلت فرم استاندارد جاوا را به مایکروسافت ویندوز, لینوکس، و سولاریس (سیستمعامل). دادهاست. همچنین محیطهای دیگری برای دیگر پلت فرمها فراهم آوردهاست. علامت تجاری مجوز شرکت سان میکروسیستم طوری بود که با همهٔ پیادهسازیها سازگار باشد. به علت اختلاف قانونی که با ماکروسافت پیدا کرد، زمانی که شرکت سان ادعا کرد که پیادهسازی ماکروسافت از RMI یا JNI پشتیبانی نکرده و ویژگیهای خاصی را برای خودش اضافه کردهاست. شرکت سان در سال ۱۹۹۷ پیگیری قانونی کرد و در سال ۲۰۰۱ در توافقی ۲۰ میلیون دلاری برنده شد. در نتیجه کمی بعدماکروسافت جاوا را به ویندوز فرستاد. در نسخهٔ اخیر ویندوز، مرورگر اینترنت نمیتواند از جاوا پلت فرم پشتیبانی کند. شرکت سان و دیگران یک سیستم اجرای جاوای رایگان برای آنها و نسخههای دیگر ویندوز فراهم آوردند.
اداره خودکار حافظه
جاوا از حافظهٔ بازیافتی خودکار برای ادارهٔ حافظه در چرخهٔ زندگی یک شی استفاده میکند. برنامهنویس زمانی که اشیا به وجود میآیند، این حافظه را تعیین میکند. و در زمان اجرا نیز، زمانی که این اشیا در استفادهٔ زیاد طولانی نباشند، برنامه نویس مسئول بازگرداندن این حافظهاست. زمانی که مرجعی برای شیهای باقیمانده نیست، شیهای غیر قابل دسترس برای آزاد شدن به صورت خودکار توسط بازیافت حافظه، انتخاب میشوند. اگر برنامهنویس مقداری از حافظه را برای شیهایی که زیاد طولانی نیستند، نگه دارد، چیزهایی شبیه سوراخ حافظه اتفاق میافتند.
یکی از عقایدی که پشت سر مدل ادارهٔ حافظهٔ خودکار جاوا وجود دارد، این است که برنامهنویس هزینهٔ اجرای ادارهٔ دستی حافظه را نادیده میگیرد. در بعضی از زبانها حافظه لازم برای ایجاد یک شی، به صورت ضمنی و بدون شرط، به پشته تخصیص داده میشود. و یا بهطور صریح اختصاص داده شده و از heap بازگردانده میشود. در هر کدام از این راهها، مسئولیت ادارهٔ اقامت حافظه با برنامهنویس است. اگر برنامه شی را برنگرداند، سوراخ حافظه اتفاق میافتد. اگر برنامه تلاش کند به حافظهای را که هماکنون بازگردانده شده، دستیابی پیدا کند یا برگرداند، نتیجه تعریف شده نیست و ممکن است برنامه بیثبات شده و یا تخریب شود. این ممکن است با استفاده از اشارهگر مدتی باقی بماند، اما سرباری و پیچیدگی برنامه زیاد میشود. بازیافت حافظه اجازه دارد در هر زمانی اتفاق بیفتد. بهطوری که این زمانی اتفاق میافتد که برنامه بیکار باشد. اگر حافظهٔ خالی کافی برای تخصیص شی جدید در هیپ وجود نداشته باشد، ممکن است برنامه برای چند دقیقه متوقف شود. در جایی که زمان پاسخ یا اجرا مهم باشد، ادارهٔ حافظه و منابع اشیا استفاده میشوند.
جاوا از نوع اشارهگر ریاضی C و ++C پشتیبانی نمیکند. در جایی که آدرس اشیا و اعداد صحیح میتوانند به جای هم استفاده شوند. همانند ++C و بعضی زبانهای شیگرای دیگر، متغیرهای نوعهای اولیهٔ جاوا شیگرا نبودند. مقدار نوعهای اولیه، مستقیماً در فیلدها ذخیره میشوند. در فیلدها (برای اشیا) و در پشته (برای توابع)، بیشتر از هیپ استفاده میشود. این یک تصمیم هوشیارانه توسط طراح جاوا برای اجرا است. به همین دلیل جاوا یک زبان شیگرای خالص به حساب نمیآید.
گرامر
گرامر جاوا وسیعتر از ++C است و برخلاف ++C که ترکیبی است از ساختارها و شیگرایی، زبان جاوا یک زبان شیگرای خالص میباشد. فقط نوع دادة اصلی از این قاعده مستثنی است. جاوا بسیاری از ویژگیها را پشتیبانی میکند و از کلاسها برای سادهتر کردن برنامهنویسی و کاهش خطا استفاده میکند.
بر طبق قرارداد فایل هل بعد از کلاسهای عمومی نام گذاری میشوند. سپس باید پسوند java را به این صورت اضافه کرد: Hello world.java. این فایل اول باید با استفاده از کامپایلر جاوا به بایت کد کامپایل شود. در نتیجه فایل Hello world.class ایجاد میشود. این فایل قابل اجرا است. فایل جاوا ممکن است فقط یک کلاس عمومی داشته باشد. اما میتواند شامل چندین کلاس با دستیابی عمومی کمتر باشد.
کلاسی که به صورت خصوصی تعریف میشود ممکن است در فایل.java ذخیره شود. کامپایلر برای هر کلاسی که در فایل اصلی تعریف میشود یک کلاس فایل تولید میکند. که نام این کلاس فایل همنام کلاس است با پسوند.class
کلمه کلیدی public (عمومی) برای قسمتهایی که میتوانند از کدهای کلاسهای دیگر صدا زده بشوند، به کار برده میشود. کلمهٔ کلیدی static (ایستا) در جلوی یک تابع، یک تابع ایستا را که فقط وابسته به کلاس است و نه قابل استفاده برای نمونههایی از کلاس، نشان میدهد. فقط تابعهای ایستا میتوانند توسط اشیا بدون مرجع صدا زده شوند. دادههای ایستا به متغیرهایی که ایستا نیستند، نمیتوانند دسترسی داشته باشند.
کلمهٔ کلیدی void (تهی) نشان میدهد که تابع main هیچ مقداری را بر نمیگرداند. اگر برنامهٔ جاوا بخواهد با خطا از برنامه خارج شود، باید system.exit() صدا زده شود. کلمهٔ main یک کلمهٔ کلیدی در زبان جاوا نیست. این نام واقعی تابعی است که جاوا برای فرستادن کنترل به برنامه، صدا میزند. برنامه جاوا ممکن است شامل چندین کلاس باشد که هر کدام دارای تابع main هستند.
تابع main باید آرایهای از اشیا رشتهای را بپذیرد. تابع main میتواند از آرگومانهای متغیر به شکل public static void main(string…args) استفاده کند که به تابع main اجازه میدهد اعدادی دلخواه از اشیا رشتهای را فراخوانی کند. پارامترstring[]args آرایهای از اشیا رشته ایست که شامل تمام آرگومانهایی که به کلاس فرستاده میشود، است.
چاپ کردن، قسمتی از کتابخانهٔ استاندارد جاوا است. کلاس سیستم یک فیلد استاتیک عمومی به نام out تعریف کردهاست. شی out یک نمونه از کلاس printstream است و شامل تعداد زیادی تابع برای چاپ کردن اطلاعات در خروجی استاندارد است. همچنین شامل println(string) برای اضافه کردن یک خط جدید برای رشتهٔ فرستاده شده اضافه میکند.
توزیعهای جاوا
منظور از توزیع جاوا پیادهسازیهای مختلفی است که برای کامپایلر جاوا و همچنین مجموعه کتابخانههای استاندارد زبان جاوا (JDK) وجود دارد. در حال حاضر چهار توزیعکنندهٔ عمده جاوا وجود دارند:
سان میکروسیستمز: توزیع کننده اصلی جاوا و مبدع آن میباشد. در اکثر موارد هنگامی که گفته میشود جاوا منظور توزیع سان میباشد.
GNU Classpath: این توزیع از سوی موسسه نرمافزارهای آزاد منتشر شده و تقریباً تمامی کتابخانه استاندارد زبان جاوا در آن بدون بهرهگیری از توزیع شرکت سان از اول پیادهسازی شدهاست. یک کامپایلر به نام GNU Compiler for Java نیز برای کامپایل کردن کدهای جاوا توسط این موسسه ایجاد شدهاست. فلسفه انتخاب نام Classpath برای این پروژه رها کردن تکنولوژی جاوا از وابستگی به علامت تجاری جاوا است بطوریکه هیچ وابستگی یا محدودیتی برای استفاده آن از لحاظ قوانین حقوقی ایجاد نشود و از طرفی به خاطر وجود متغیر محیطی classpath در تمامی محیطهای احرایی برنامههای جاوا، این نام به نوعی تکنولوژی جاوا را برای خواننده القا میکند. کامپایلر GNU توانایی ایجاد کد اجرایی (در مقابل بایت کد توزیع سان) را داراست. لازم به ذکر است که در حال حاضر شرکت سان تقریباً تمامی کدهای JDK را تحت مجوز نرمافزارهای آزاد به صورت متن باز منتشر کردهاست و قول انتشار قسمت بسیار کوچکی از این مجموعه را که بهدلیل استفاده از کدهای شرکتهای ثانویه نتوانسته به صورت متن باز منتشر نماید در آینده نزدیک با بازنویسی این کدها دادهاست.
مایکروسافت #J: این در حقیقت یک توزیع جاوا نیست. بلکه زبانی مشابه میباشد که توسط مایکروسافت و در چارچوب.net ارائه شدهاست. انتظار اینکه در سیستمعاملی غیر از ویندوز هم اجرا شود را نداشته باشید.
AspectJ: این نیز یک زبان مجزا نیست. بلکه یک برنامه الحاقی میباشد که امکان برنامه نویسی Aspect Oriented را به جاوا میافزاید. این برنامه توسط بنیاد برنامهنویسی جلوهگرا و به صورت کدباز ارائه شدهاست.
کلاسهای خاص
برنامک (برنامههای کاربردی کوچک)
اپلت جاواها برنامههایی هستند که برای کاربردهایی نظیر نمایش در صفحات وب، ایجاد شدهاند. واژهٔ import باعث میشود کامپایلر جاوا کلاسهای javaapplet.Applet وjava.awt.Graphics را به کامپایل برنامه اضافه کند. کلاس Hello کلاس Applet را توسعه میدهد. کلاس اپلت چارچوبی برای کاربردهای گروهی برای نمایش و کنترل چرخهٔ زندگی اپلت، درست میکند. کلاس اپلت یک تابع پنجرهای مجرد است که برنامههای کوچکی با قابلیت نشان دادن واسط گرافیکی برای کاربر را فراهم میکند. کلاس Hello تابع موروثی print(Graphics) را از سوپر کلاس container باطل میکند، برای اینکه کدی که اپلت را نمایش میدهد، فراهم کند. تابع paint شیهای گرافیکی را که شامل زمینههای گرافیکی هستند را میفرستد تا برای نمایش اپلتها استفاده شوند. تابع paint برای نمایش "Hello world!" تابع drawstring(string,int,int) را صدا میزند.
جاوا سرولت
تکنولوژی servlet جاوا گسترس وب را به آسانی فراهم میکند. و شامل مکانیزمهایی برای توسعهٔ تابعی سرور وب و برایدسترسی به سیستمهای تجاری موجود است.servlet قسمتی از javaEE است که به درخواستهای مشتری پاسخ میدهد.
واژهٔ import کامپایلر جاوا را هدایت میکند که تمام کلاسهای عمومی و واسطها را از بستههای java.io وjava.servlet را در کامپایل وارد کند.
کلاس Hello کلاس Genericservlet را توسعه میدهد. کلاس Genericservlet واسطی برای سرور فراهم میکند تا درخواست را به servlet بفرستد و چرخهٔ زندگی servlet را کنترل کند.
JSP
صفحهٔ سرور جاوا قسمتی از سرور javaEE است که پاسخ تولید میکند. نوعاً صفحات HTML به درخواستهای HTTP از مشتری.JSPها کد جاوا در صفحهٔ HTML را با استفاده از حائل <%and%> اضافه میکنند.JSP به javaservlet کامپایل میشود.
سوینگ
Swing کتابخانهٔ واسط گرافیکی کاربر است برای پلت فرم javaSE. ابزاری مشابه پنجره، GTK و motif توسط شرکت sun فراهم شدهاند. این مثال کاربرد swing یک پنجرهٔ واحد همراه با Hello world را ایجاد میکند.
اولین جملهٔ import کامپایلر جاوا را هدایت میکندتا کلاس Borderlayout را از بستهٔ java.awt در جاوا به کامپایل اضافه کند. و import دوم همهٔ کلاسهای عمومی و واسط آنها را از بستهٔ javax.swing اضافه میکند. کلاس Hello کلاس Jframe را توسعه میدهد. کلاس Jframe یک پنجره با میلهٔ عنوان و کنترل بستن است.
زمانی که برنامه آغاز میشود، تابع main با JVM صدا زده میشود. این یک نمونهٔ جدید از کلاس Hello را ایجاد کرده و با صدا زدن تابع setvisible(boolean) با مقدار true نمایش داده میشود.