نگاهی مفصل بر تاریخچه زبان برنامه نویسی جاوا

در ماه می سال ۱۹۹۵، جان گیت (John Gage)، مدیر بخش علمی سان میکروسیستمز (Sun Microsystems) همراه با مارک اندرسون (Marc Andreesen)، موسس و معاون اجرایی نتسکیپ (Netscape) به گروهی از تماشاگران سان ورلد (SunWorldTM) اعلام کرد که تکنولوژی جاوا، تخیلی نیست و حقیقت دارد و قرار است به زودی در نویگیتور (Navigator) نتسکیپ استفاده شود.

 در آن زمان، تعداد کل افرادی که روی جاوا کار می کردند کمتر از سی نفر بود. این تیم قرار بود آینده را به کلی تغییر دهد و هیچ کس از این واقعیت باخبر نبودند. جاوا مغز یک وسیله بی نام در مریخ ، محیط عامل اغلب وسایل الکترونیکی مانند گیرنده های تلویزیونی، وی سی آر ها (VCRs) و تسترها و دستیار دیجیتال شخصی (PDAs) است. جاوا مسیر طولانی از ایده اولیه خود آمده است. در این پست خواهیم دید که چطور این اتفاق افتاد.

زبان های برنامه نویسی اولیه

قبل از ظهور جاوا به عنوان یک زبان برنامه نویسی، سی پلاس پلاس بازیگر اصلی در صحنه بود. هدف اصلی موسس جاوا، ایجاد زبانی بود که بتواند از پس اکثر کارایی که سی پلاس پلاس انجام می دهد، بر آید و همزمان مسائل دست و پا گیری که همراه زبان های اولیه بود، حذف شوند.

 سخت افزار کامپیوتر، از سال ۱۹۷۲ تا ۱۹۹۱ دچار انقلاب کارائی و قیمت شد. سخت افزارهای بهتر و سریع تر با قیمت پایین تر در دسترس بودند و تقاضا برای نرم افزارهای پیچیده تر بالا رفت. برای برآورد کردن این تقاضا ها، تکنولوژی های توسعه جدید اختراع شدند.

 زبان سی در سال ۱۹۷۲ توسط دنیس ریتچی (Dennis Ritchie) توسعه یافت و بیشتر از یک دهه طول کشید تا تبدیل به زبان محبوب برنامه نویسانی شود که روی کامپیوترهای شخصی و پلتفرم های مشابه ( زبان های دیگر مانند کوبول (COBOL) و فورترن (FORTRAN)، که بازار مین فریم ها را در اختیار داشتند) کار می کردند. اما با گذشت زمان برنامه نویسان فهمیدند که برنامه نویسی با سی بخاطر سینتکس ساختاری آن کسل کننده است. برخی سعی کردند این مشکل را حل کنند و بعد ها فلسفه توسعه جدیدی به نام برنامه نویسی شی گرا (Object-Oriented Programming) معرفی شد با برنامه نویسی شی گرا، شما می توانید کدی بنویسید که بعدا بدون نیاز به نوشتن دوباره کد تکراری، از آن استفاده مجدد نمایید. در سال ۱۹۷۹، بیرن استروستروپ (Bjarne Stroustrup) با بهبود زبان سی و ادغام مفهوم برنامه نویسی شی گرا و ویژگی هایش، سی پلاس پلاس را توسعه داد.

 

تیم سبز

 پشت درهای بسته، پروژه ای در دسامبر سال ۱۹۹۰ ، شروع شد که هدفش ایجاد یک ابزار برنامه ریزی برای رندر زبان های برنامه نویسی سی و سی پلاس پلاس بود. مهندس پاتریک ناتون (Patrick Naughton) از وضعیت واسط های برنامه نویسی (APIs) سی پلاس پلاس و سی و ابزارهای سانز ناراضی بود. هنگامی که مهاجرت به NeXT را بررسی می کرد، به او پیشنهاد شد روی تکنولوژی جدیدی کار کند و این گونه پروژه Stealth شروع شد. رازی که هیچ کس آن را نمی دانست.

 پروژه Stealth  زمانی که جیمز گاسلینگ و مایک شریدن (Mike Sheridan) به پاتریک اضافه شدند، به پروژه سبز تغییر نام داد. با گذشت زمان که پروژه شکل گرفت، اهداف و مسیر پروژه واضح تر شدند. دیگر هدف پروژه ایجاد زبان برنامه نویسی جدیدی که بهتر از بقیه زبان ها باشد نبود. هدف جدید زبانی بود که وسائلی غیر از کامپیوتر را در نظر داشته باشد.

 با سیزده نفر، شروع به کار در شرکتی کوچک در جاده سندهیل در منلو پارک کالیفرنیا کردند. این تیم به تیم سبز مشهور شدند. پروژه ای که روی آن کار می کردند توسط سان میکروسیستمز پشتیبانی می شود و هدفشان برنامه ریزی برای موج بعدی در محاسبات بود. برای تیم، این هدف به معنی تمرکز بر روی همگرایی کنترل دیجیتال وسائل و کامپیوترهای مشتریان بود.

 

تغییر شکل ایده ها

تیم به فکر جایگزین کردن سی پلاس پلاس با ورژنی بهتر، سریع تر و ریسپانسیو افتادند. اما تنها چیزی که به آن فکر نکردند این بود که زبانی که می خواهند بسازند باید برای سیستم های تعبیه ای (embedded system) با منابع محدود توسعه داده شود. یک سیستم تعبیه ای، سیستم کامپیوتری هست که در اینترفیس کوچکی قرار دارد و تنها چند عمل براساس طراحیش دارد. برای چنین سیستمی، سی پلاس پلاس یا هر زبان موفق دیگری، مانند تمام زبان های آن زمان بسیار بزرگ بودند و اینترفیسی بزرگتری نیاز داشتند. بنابراین تیم به شیوه ای دیگر برای حل این مشکل فکر کردند.

 موسس سان میکروسیستمز، بیل جوی (Bill Joy) ، ایده زبانی را با ترکیب قدرت مسا (Mesa) و سی را روی کاغذی برای مهندسان سان با نام پیش بری (Further) نوشت. با جمع آوری ایده ها، گاسلینگ شروع به کار روی بهبود سی پلاس پلاس کرد و آن را C++ ++ — نامید. نامی انقلابی که در میان زبان های برنامه نویسی عجیب بود. ++ و – به معنی گذاشتن و برداشتن بود. خیلی زود نام آن را تغییر داد و بخاطر درخت بلوطی که بیرون شرکتش بود آن را اوک (Oak) ، به معنی بلوط، نامید.

 

کسانی که در توسعه تکنولوژی جاوا نقش داشتند.

GT=Green Team , FP=FirstPerson, JP=Java Product Group

جزئیات

GT

FP

JP

نام

کارمند فرست پرسن و عضو جاوا پراداکت گروپ

 

بله

بله

لیسا فرندلی (Lisa Friendly)

مدیر شرکت ساینس، سان میکروسیستمز

     

جان گیج (John Gage)

مهندس اصلی و معمار تکنولوژی جاوا

بله

بله

بله

جیمز گاسلینگ (James Gosling)

موسس و مهاون سان میکروسیستمز؛ طراح یو سی برکلی، نسخه ای از سیستم عامل یونیکس

     

بیل جوی (Bill Joy)

کارمند جاوا پراداکت گروپ، نویسنده بخش سوال و جواب جاوا

 

بله

 

جانی کانروا (Jonni Kanerva)

کارمند فرست پرسن و عضو جاوا پراداکت گروپ

 

بله

بله

تیم لیندهولم (Tim Lindholm)

مدیرعامل سان میکروسیستمز

     

اسکات مکنیلی (Scott McNealy)

عضو تیم سبز و موسس همراه فرست پرسن

بله

بله

 

پاتریک ناتون (Patrick Naughton)

مدیر بازاریابی شرکت، بخش نرم افزاری جاوا سان

     

جورج پائولینی (George Paolini)

بازاریابی محصول فرست پرسن

 

بله

 

کیم پولیس (Kim Polese)

مدیر بخش روابط عمومی تکنولوژی جاوا

     

لیسا پولسون (Lisa Poulson)

مدیرعامل غرست پرسن

 

بله

 

وین روسینگ (Wayne Rosing)

مدیر سابق بخش تکنولوژی سان میکروسیستمز

     

اریک اشمیت (Eric Schmidt)

عضو تیم سبز

بله

   

مایک شریدن (Mike Sheridan)

 

 مرگ یک ایده و تولد دیگری

اوک (Oak) به خوبی به کار خود ادامه می داد تا اینکه سال ۱۹۹۳ از راه فرا رسید و مردم پی بردند که ایده های تلویزیون های تعاملی و دستیار های دیجیتال شخصی به درد نمی خورد. شکستی که به طور کامل اهداف مخترعان را به هم ریخت. تنها یک معجزه می توانست باعث موفقیت پروژه شود و همه منتظر آن معجزه نشسته بودند.

 مرکز ملی برنامه های محاسباتی (NCSA) به تازگی مرورگر وب تجاری جدید خود را معرفی کرده بود. تیم تمرکز خود را روی اینترنت گذاشتند که فکر می کردند موج جدید مخاسبات خواهد بود. تیم شروع به ایجاد همان تکنولوژی های تعبیه ای کردند که قرار بود در فضای مرورگر وب استفاده شود و آن را اپلت (applet)، یک برنامه کوچک، نامیدند. با در نظر گرفتن این موارد، تیم لیستی از ویژگی هایی که مشکلات سی پلاس پلاس را حل می کرد، ساختند. به نظرشان، پروژه باید:

  •  ساده باشد و ویژگی های اساسی تست شده زبان های قبلی را داشته باشد.
  • مجموعه ای استاندارد از API ها با ویژگی های ساده و پیشرفته زبان داشته باشد.
  • نیاز به دستکاری سخت افزار مانند حافظه برای امن ساختن زبان به طور کلی حذف شود.
  • مستقل از پلتفرم باشد و برای تمامی پلتفرم ها یک بار نوشته شود. ( ایده «یک بار بنویس، همیشه اجرا کن (WORA) » متولد شد).
  • امکان دستکاری برنامه نویسی شبکه را خارج از باکس داشته باشد.
  • داخل مرورگرهای وب جاسازی شود.
  • این امکان را داشته باشد که یک برنامه چند کار را همزمان انجام دهد.

 

حال تیم نیاز به یک معرفی مناسب داشتند و تصمیم گرفتند که تکنولوژی جدید را به عنوان یک محصول نسل جدید برای انقلاب اینترنت، جاوا بنامند. نشان این محصول شخصیت کارتونی به نام دوک بود که توسط جو پارلنگ (Joe Parlang) ایجاد شد که بعد ها تبدیل به هویت آن شد. بالاخره در کنفرانس سان ورلد، اندرسون تکنولوژی جدید را به جمعیت معرفی کرد. با توجه به استقبال انفجاری از اینترنت و عمومیت یافتن آن، جاوا خیلی زود شناخته و مشهور شد و مدتی نگذشت که تبدیل به برنامه اصلی برای مرورگرها و برنامه های مشتری شد.

در ابتدا، مالکیت جاوا با سان میکروسیستمز بود اما بعدا متن باز در اختیار عموم قرار گرفت. با این حال اسم جاوا، نام تجاری متعلق به سان میکروسیستمز است. سان کدمنبع جاوا را برای ماشین های مجازی و کامپایلر در ماه نوامبر سال ۲۰۰۶ منتشر کرد و اکثر کد منبع کتابخانه های کلاس را در ماه می ۲۰۰۷ انتشار یافت. برخی از بخش ها در اختیار عموم قرار نگرفت بخاطر اینکه مالکیت آن با کمپانی سومی بود و سان اختیار آن را نداشت. بخش های منتشر شده تحت نام GNU General Public License به عنوان یک لایسنس برنامه رایگان منتشر شدند.

 

ورژن ها

برخلاف سی و سی پلاس پلاس، رشد جاوا در سال های اخیر اتفاق افتاده است. در اینجا، نگاهی سریع به مسیر توسعه ای که جاوا آمده است، می اندازیم. از ورژن های ۱٫۰ تا ۱٫۷ جاوا رشد ثابتی داشته است.

 

انتشار اولیه (ورژن های ۱٫۰ و ۱٫۱)

در سال ۱۹۹۶ برای سولاریس، ویندوز، مک و لینوکس به عنوان کیت توسعه جاوا (JDK 1.0) منتشر شد. این کیت شامل جاوا ران تایم (ماشین مجازی و کتابخانه های کلاس) و ابزارهای توسعه (مانند کامپایلر) بود. بعدها سان، پکیج ران تایمی با نام محیط ران تایم جاوا (JRE) آماده کرد. نام آن ماندگار شد. معمولا ورژن جاوا را با ورژن JDK آن می گویند.

 

جاوا ۲ (ورژن ۱٫۲)

در سال ۱۹۹۸ به عنوان آپدیت ترمیمی ورژن قبلی منتشر شد. ورژن ۱٫۲ شروع تازه ای برای جاوا محسوب می شود. JDK های ورژن ۱٫۲ و ورژن های بعدی اغلب جاوا ۲ نامیده می شوند. برای مثال، نام رسمی JDK 1.4 اسم Java(TM) 2 Platform, Standard Edition version 1.4 می باشد.

تغییرات اصلی در زیر لیست شده اند:

  • بازنویسی مدیریت ایونت
  • تغییر سینک شدن نخ ها
  • معرفی کامپایلر JIT-Just in time

 

کسترل (Kestrel) ( جاوا ۱٫۳)

در ماه می سال ۲۰۰۰ منتشر شد. تغییرات اصلی موارد زیر بودند:

  • HotSpot JVM اضافه شد (HotSpot JVM اولین بار در ماه آپریل سال ۱۹۹۹ برای J2SE 1.2 JVM توزیع شده بود).
  • RMI بهبود یافته بود تا از سازگاری اختیاری با کوربا (CORBA) پشتیبانی کند.
  • JavaSound
  • نام دهی جاوا و اینترفیس دایرکتوری (Java Naming and Directory Interface (JNDI)) در کتابخانه اصلی اضافه شدند ( قبلا به عنوان یک افزونه در دسترس بود).
  • معماری دیباگ پلتفرم جاوا (Java Platform Debugger Architecture (JPDA))
  • کلاس پروکسی ترکیبی (Synthetic proxy classes)

 

 مرلین (جاوا ۱٫۴)

در ماه فوریه سال ۲۰۰۲ منتشر شد. جاوا ۱٫۴ با توسعه توانایی های زبان و API های در دسترس، کارائی برنامه نویسی را بهبود بخشید.

  • تاکید (Assertion)
  • بیان منظم (Regular Expression)
  • پردازش XML (XML processing)
  • رمزنگاری و لایه ساکت امن (Cryptography and Secure Socket Layer (SSL))
  • ورودی و خروجی بلاک نشده (Non-blocking I/O (NIO))
  • واقعه نگاری (Logging)

 

تایگر (Tiger) (ورژن ۱٫۵٫۰: جاوا اس ای ۵)

در سپتامبر سال ۲۰۰۴ منتشر شد.

تغییرات اصلی در زیر آمده است:

  • Generics : برای مجموعه ها امنیت زمان کامپایل فراهم می کند و سختی کار را حذف می کند.
  • Autoboxing/unboxing : دردسر تبدیل بین نوع داده های اصلی مانند int و نوع پوشه ای مانند Integer را حذف می کند.
  • برای کوتاه سازی حلقه for بهبود یافته است.
  • واردات ایستا : به شما اجازه می دهد تمامی بخش های ایستای کلاس را وارد کنید.
  • حاشیه نویسی و متادیتا (Annotation/Metadata): ابزارهایی برای تولید کد و توسعه کد از حاشیه نویسی های کدمنبع فراهم آورده است. این ابزارها منجر به شیوخ برنامه نویسی اعلانی (declarative programming) شد که برنامه نویس می گوید چه کاری باید انجام شود و ابزار کد مربوطه برای انجام آن را ایجاد می نماید. حاشیه نویسی ها می توانند از طریق تجزیه کد منبع یا استفاده از API های اضافه شده در جاوا ۵ ، بررسی شوند.
  • بهبود JVM: اکثر کتابخانه ران تایم، به جای اینکه به شکل یک سری فایل های کلاس باشد، به عنوان یک تصویر حافظه در حافظه مپ شده است. بخش بزرگی از کتابخانه های ران تایم، بین متغیر های JVM های متعدد به اشتراک گذاشته خواهد شد.

 

ماستانگ (Mustang) ورژن ۱٫۶٫۰: جاوا اس ای ۶

در ماه دسامبر سال ۲۰۰۶ منتشر شد.

ویژگی های جدید جاوا اس ای ۶:

  • وب سرویس ها: پشتیبانی عالی از نوشتن برنامه های کلاینت وی سرویس XML.
  • اسکریپت نویسی: حال می توانید تکنولوژی جاوا اسکریپت را نیز ترکیب کنید که برای پروتوتایپ سازی مفید است. همچنین هنگامی که تیمی با مهارت های مختلف دارید. توسعه دهندگان بسیار پیشرفته می توانند موتور اسکریپت خود را استفاده کنند و زبان اسکریپت نویسی مورد علاقه خود را با کد جاوا آن جوری که صلاح می دانند، ترکیب کنند.
  • پایگاه داده : هنگام توسعه یک برنامه ی پایگاه داده، دیگر نیازی نیست پایگاه داده JDBC خود را پیدا و راه اندازی کنید. توسعه دهندگان همچنین JDBC 4.0 آپدیت شده ، را دریافت می کنند . یک API کاربردی با بهبودهای مهم مانند پشتیبانی خاص از XML به عنوان یک دیتاتایپ اس کیو ال و ادغام بهتر شی های بزرگ باینری (BLOBs) و شی های بزرگ کارکتری (CLOBs) در API ها است.
  • API های دستکتاپ بیشتر
  • دسترسی کامپایلر
  • امنیت: جاوا اس ای ۶ با تعریف شیوه های جدید برای دسترسی به پلتفرم، کار مدیریت امنیت را آسان کرده است. سرویس های امنیت بومی مانند: ساختار کلید عمومی بومی (PKI) و سرویس رمزنگاری روی مایکروسافت ویندوز برای اعتبارسنجی و ارتباط امن ، سرویس امنیتی جنریک جاوا (Java GSS) و سرویس کربروس (Kerberos) برای اعتبارسنجی و دسترسی به سرور های LDAP برای اعتبارسنجی کاربران.

 

دلفین (ورژن ۱٫۷٫۰: جاوا اس ای ۷)

در ۲۸ جولای سال ۲۰۱۱ منتشر شد.

ویژگی های جدید جاوا ۷ در زیر آورده شده است:

  • پشتیبانی JVM برای زبان های پویا. ادامه کاری که در حال حاضر در ماشین مجازی چند زبانه انجام می شود.
  • اشاره گرهای ۶۴ بیتی موجود در جاوا ۶ با -XX:+UseCompressedOops فشرده سازی شده است.
  • تغییرات کوچک در زبان که تحت گروهی به نام کوین (Coin) آمده است.
    • رشته ها در سوییچ
    • مدیریت منابع اتوماتیک در try-statement
    • استنتاج بهبود یافته برای ایجاد متغیرهای جنریک
    • ساده سازی اعلان متدهای varargs
    • لیترال های صحیح باینری
    • اجازه داده به آندراسکورها در لیترال های عددی
    • گرفتن نوع های استثنا متعدد و چک کردن آنها
  •  همزمانی تسهیلات تحت JSR 166
  • فایل جدید کتابخانه برای بهبود استقلال پلتفرم و اضافه کردن پشتیبانی برای متادیتا و لینک های سمبلیک. پکیج های جدید java.nio.file و java.nio.file.attribute هستند.
  • پشتیبانی سطح کتابخانه برای الگوریتم رمزنگاری Elliptic curve
  • یک XRender برای جاوا دو بعدی که مدیریت ویژگی های خاص GPU های مدرن را بهبود بخشیده است.
  • API های پلتفرم جدید برای ویژگی های گرافیکی که قرار بود در ورژن ۶u10 جاوا اضافه شود.
  • پشتیبانی پیشرفته سطح کتابخانه برای پروتکل های شبکه، از جمله SCTP و پروتکل Sockets Direct.
  • آپدیت برای XML و یونیکدها

 

Lambda (تابع لمبدا در جاوا)،Jigsaw (مازول های جاوا) و بخشی از کوین (Coin) از جاوا ۷ حذف شدند و با مایقی ویژگی ها جاوا ۸ در تابستان سال ۲۰۱۳ منتشر شد.

 

 

منبع

 

 




0 پاسخ

ارسال یک پاسخ

در گفتگو ها شرکت کنید.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *