مقدمه
زبان برنامه نویسی جاوا زبانی سطح بالا می باشد که امروزه نقش مهمی در پیاده سازی نرم افزارهای سازمانی، تحت شبکه ، مستقل از پلتفرم و چند لایه ایفا می کند. برنامه های جاوا از کارت های هوشمند و گوشی های موبایل گرفته تا سیستم های پورتال اتحادیه اروپا و مریخ پیمای ناسا و.. در حال اجرا می باشد.
آنچه جاوا به عنوان یک پلتفرم مطرح می کند، خدمات زیر بنایی و عدم وابستگی به ساختارهای سخت افزاری و نرم افزاری متنوع امروزی می باشد، که امکان انتقال و جابجایی برنامه های نوشته شده به زبان جاوا را بر روی سیستم عامل ها و سرور های گوناگون به راحتی فراهم می کند. برای مثال بعضی از برنامه های جاوا بر روی سرور های وب قرار می گیرند و هر کاربر وب که آنها را درخواست کند برنامه بدون نیاز به داشتن اطلاع در مورد نوع سخت افزار و یا سیستم عامل کاربر به طرف کلاینت حرکت کرده و در آنجا اجرا می شوند.
همچنین ماشین مجازی جاوا این امکان را فراهم می کند که برنامه در هنگام اجرا از نظر امنیتی، صحت کارکرد و اجازه دسترسی ، قابل کنترل باشند، لذا برنامه هایی که به زبان جاوا نوشته می شوند بسیار مطمئن و پایدار می باشند.
تکنولوژی های جاوا به صورت مجموعه ای از استانداردها که توسط انجمن جاوا (بیشتر از 700 عضو حقیقی و حقوقی) پیشنهاد ، تهیه و منتشر می گردند. شرکتهای مختلف بر اساس این استانداردها محصولات جاوا را با ویژگی های مختلف ولی رفتار یکسان پیاده سازی می کنند که هر یک از این محصولات گستره متنوعی از شرایط و هزینه های گوناگون را پدید می آورند. لذا کاربران جاوا به شرکت یا محصول خاصی وابسته نیستند و حتی در بسیاری از موارد پیاده سازی اوپن سورس این استاندارد ها نیز دردسترس می باشد.
هم اکنون شرکت سان نیز با اوپن سورس کردن ابزارهای جاوا این آزادی را کاملتر کرده است.
یکی دیگر از عوامل موفقیت جاوا ، سادگی آن برای طراحی سیستم های بزرگ و سازمانی با استفاده از خدمات زیربنایی میان افزار (middle-ware) می باشد.
پایداری، مقیاس پذیری ، در دسترس بودن ، امنیت، قابلیت گسترش و توزیع پذیری از ویژگی های بارز این زبان می باشد.
* این مقدمه مطلب کاملی هست که با کمی تغییر از طرف جناب پروینی نقل کردم
- دوره تکامل نرم افزار
برای اینکه با شرایط و نیازی که در پیش رو داریم آشنا شویم ، مرور مختصری بر دوره تکامل نرم افزار می کنیم.
اولین دوره از سال 1950 می باشد که تا اواسط دهه 60 ادامه داشته است.
در این دوره از مینفریم ها استفاده می شد و نرم افزارها بر اساس نیاز خاص این شرکت ها ایجاد شده و محدود می شدند.
در این دوره نرم افزار ها توضیع پذیری نداشت اند.
دوره دوم از اواسط دهه 60 شروع و تا اوایل دهه 70 ادامه داشته است.
در این دوره سیستم های بلادرنگ پدید آمده و همچنین پایگاه های داده مطرح و مورد استفاده قرار گرفتند.
در این دوره کمپانی های تولید کننده نرم افزارعمومی وجود نداشته و با توجه به نیاز خاص مشتریان محصولات به طور سفارشی تولید می گردیده.
دوره سوم از اواسط دهه 70 شروع و تا اواسط دهه 80 ادامه داشته است.
در این دوره کامپیوتر های شخصی عرضه شدند و به همراه آن شبکه ها شکل گرفتند.
همچنین به علت پایین تر بودن قیمت کامپیوتر های خانگی تعداد افراد بیشتری قادر به تهیه آن بودند ، لذا نیاز به نرم افزارها به مراتب بیشتر از قبل احساس شد و نرم افزارهای عمومی تری برای استفاده چندین سازمان عرضه شد.
دوره چهارم که تا اوایل سال 2000 میلادی ادامه داشته است.
در این دوره با قدرتمند شدن و کاهش هزینه های کامپیوتر های شخصی ،نرم افزار ها همگانی تر شدند.
در این دوره دیدگاه شئ گرائی ،هوش مصنوعی ، شبکه های عصبی ،برنامه پذیری چیپست ها و سیستم های خبره مطرح شدند که باعث نزدیکی نرم افزارها با دنیای واقعی شده و آنها را در زمینه گوناگون زندگی وارد کردند.
از این دوره تا به حال با فرا گیر شدن اینترنت و افزایش اعتماد عمومی به کامپیوتر ها و همچنین درک سودمند بودن آنها از لحاظ مالی زمانی نیروی کار و دقت موجب شد که نرم افزار های قدرت مندی در دنیای معاملات بزرگ و سیستم های سازمانی حساس وارد شوند.
- سیستم های سازمانی با حساسیت زیاد
در این سیستم ها موارد زیر بسیار اهمیت دارد:
حجم زیاد کاربر و استفاده زیاد از آن High scalable))
در این سیستم ها ما با کاربران زیادی رو برو هستیم که استفاده آنها از این سیستم بسیار زیاد می باشد.
مثلاً سایت بورس که اجازه خرید و فروش سهام را به کاربران خود می دهد که کاربران می توانند از سراسر دنیا اعمال مورد نظر خود را انجام دهند.
همیشه در دسترس بودن (High available)
این نوع سیستم ها همیشه در حال سرویس دهی به مشتریان هستند و ما نمی توانیم آنها را از حالت اجرا خارج کرده و تغییراتی را در آنها اعمال کنیم. حتی برای تغییر و به روز رسانی نباید اختلالی در سیستم پیش بیاید.
به طوری که 24 ساعت روز و 7 روز هفته و تمام مدت سال باید بتوانند سرویس دهند.
پایدار بودن (High reliable)
وقتی که سیستم فعال است و در حال سرویس دهی می باشد ، نباید خطا های برنامه نویسی و یا ارتباطی و.... موجب اختلال در روند اجرا و دان شدن آن داشته باشد.
باید تمام ایرادات کنترل کرده و روند برنامه را طوری هدایت کرد که باعث اختلال نشود.
امنیت زیادی داشته باشد (Secure)
بحث امنیت همیشه مورد توجه بوده و در سیستم های سازمانی اهمیت بیشتری پیدا می کند.
کاربران باید از صحت عملکرد و مخفی ماندن اطلاعات شخصی و اموالشان مطمئن باشند.
مدیریت درست تراکنش ها (Transaction)
در سیستم های سازمانی مدیریت تراکنش ها اهمیت بسیاری دارد. و نباید با سهل انگاری در این موضوع ، عملکرد کلی سیستم را زیر سئوال ببریم.
با توجه به محیط و نیازهای ما ، باید این موارد مدیریت شوند تا در میان کار با مشکلی مواجه نشویم.
در قسمت های بعدی به طور مفصل به این موضوع می پردازیم.
توزیع پذیری (Distribute)
امروزه با مطرح شدن معماری سرویس گرا و هم چنین بعضی از سیستم ها که برای پردازش داده ها ، نیازمند شکسته شدن به چندین قسمت جدا از هم می باشند، این موضوع اهمیت بسیاری پیدا می کند.
مثلاً ممکن است ما شرکت بزرگی داشته باشیم که چندین قسمت مجزا ( مثل حسا بداری – انبار داری و قسمت فروش و...) داشته باشد که می توان با قسمت قسمت کردن آن ، نگهداری ،توسعه ، اشکال یابی و... را سریعتر کرد ، یا برای انجام کاری پردازش بسیار زیادی لازم داریم که با یک دستگاه نمی توان انجام داد و می توانیم برنامه خود را بر روی چندین سیستم اجرا کرده و به هر کدام وظیفه پردازش قسمتی از کار را محول کنیم.
پلتفرم های جاوا
حال نگاهی بر پلتفرم های جاوا می اندازیم تا موقعیت پلتفرمهای آن بهتر آشنا شویم.
زبان جاوا از 3 پلتفرم اصلی تشکیل شده است
شکل 1: پلتفرم های جاوا
(Java 2 Platform, Standard Edition) Java SE1-
این پلتفرم برای برنامه نویسی استاندارد در زبان جاوا می باشد و دو پلتفرم دیگر بر اساس این پلتفرم بنا گردیده اند. به طوری که هسته اصلی آنها ، این پلتفرم می باشد.
2- Java ME (Java 2 Platform, Micro Edition)
این پلتفرم برای برنامه نویسی موبایل و دستگاه های محدود تر می باشد.
از این تکنولوژی در برنامه نویسی برای چیپست ها استفاده می شود.
3- Java EE (Java 2 Platform, Enterprise Edition)
Java EE پلتفرم جاوا برای برنامه سازی در حد سیستم هایی با حساسیت زیاد (Enterprise) میباشد که با امکانات زیادی که به ما می دهد، برنامه نویسی برای این سیستم ها را ساده تر ، سریعتر و قابل اطمینان تر می کند.
نگرش Java EE در مورد طراحی ، توسعه ، ترکیب کردن برنامه های Enterprise بر پایه کامپوننت هایی در چندین لایه می باشد ، که موجب :
- کاهش کد کامپوننت های برنامه نویس می شود. در نتیجه نگهداری و توسعه ی نرم افزار را آسانتر و سریعتر می کند.
- قسمتی از کد توسط لایه های میانی ایجاد شده که مسئولیت مدیریت عملیات سطح پایین سیستم را به عهده دارد و برنامه نویس بر مسئله ی خاص و مورد نیاز متمرکز می شود.
به دلیل استاندارد بودن کامپوننت ها قابلیت حمل برنامه بیشتر بوده و برای انتخاب کامپوننت های آماده قدرت انتخاب وجود دارد.
این پلتفرم با فراهم کردن امکانات و ابزار مناسب ما را در این کار کمک می کند.
در این تصویر می توان این ابزار را مشاهده کرد.
سلام
از مقاله ی خوبتون ممنونم.
فقط در مورد سه پلتفرم اصلی جاوا اطلاعات بیشتر میخواستم. میشه یکم بیشتر توضیح بدین؟ یعنی چه فرقی دارن؟ و آیا نوشتن برای هرکدوم متفاوته؟
یک سوال دیگه هم داشتم که شما فرمودین سه پلتفرم اصلی ٬ مگه غیر از اینا هم هست؟
بازم ازتون تشکر میکنم.
sorset نوشته :سلام
از مقاله ی خوبتون ممنونم.
فقط در مورد سه پلتفرم اصلی جاوا اطلاعات بیشتر میخواستم. میشه یکم بیشتر توضیح بدین؟ یعنی چه فرقی دارن؟ و آیا نوشتن برای هرکدوم متفاوته؟
یک سوال دیگه هم داشتم که شما فرمودین سه پلتفرم اصلی ٬ مگه غیر از اینا هم هست؟
بازم ازتون تشکر میکنم.
همین ۳ تا هست
نوشتن خیر ولی کتابخانه ها فرق می کنه و هر کدوم api های مخصوصی دارن
و چون api های پلتفرم های دیگه هم بر اساس جاوای استاندارد هست شما به جاوای استاندارد نیاز دارید
عکس پست یعدی هم می تونه مفید باشه
اگر دقت کنید جاوای استاندارد در لایه ی پایینتر قرار داره و این پلتفرم از پلتفرم استاندارد نیز استفاده می کنه
در ادامه چند تا از این api ها رو توضیح می دم
که بعضی ها هم مشترک هست (مثل jdbc)
شکل 2: API ها و محفظه های پلتفرم Java EE
محفظه ها در Java EE
در این پلتفرم سه نوع محفظه (container) وجود دارد که وظیفه آنها فراهم کردن محیط یکسان و مناسب برا کامپوننت ها می باشد.
این محفظه ها با قرار گرفتن بین کامپوننت ها و سطح های پایین تر باعث می شوند که کامپوننت ها درگیر مسائل سطح پایین تر نشده و وظیفه اختصاصی خود را داشته باشند.
1.محفظه وب
این محفظه بین کامپوننت های وب و وب سرور می باشد که مدیریت چرخه حیات کامپوننت ها و رساندن درخواست های آنها به کامپوننت های دیگر برنامه را دارد.
2.محفظه سمت کلاینت
این محفظه سمت کلاینت قرار می گیرد و بین کامپوننت های سرور و کلاینت ارتباط بر قرار می کند.
3.محفظه EJB
این محفظه ، منطق تجاری نیز می باشد ودر سرور Java EE قرار می گیرد. وظیفه آن مدیریت بین ها (bean) و کامپوننت های دیگرمی باشد.
- Java EE API
ابزارهائی که در ورژن 5 این پلتفرم در دسترس هستند و می توان از آنها استفاده کرد ، به شرح زیر می باشد:
1.Java Servlet Technology
2.(JSP) Java Server Pages Technology
3.Java Message Service API (JMS)
4.Java Transaction API (JTA)
5.JavaMail API
6.JavaBeans Activation Framework (JAF)
7.Java API for XML Processing (JAXP)
8.Java API for XML-Based RPC (JAX-RPC)
9.SOAP with Attachments API for Java (SAAJ)
10.Java API for XML Registries (JAXR)
11.J2EE Connector Architecture
12.JDBC API
13.Enterprise JavaBeans Technology (EJB)
14.Java Naming and Directory Interface (JNDI)
در ادامه چند ابزار پر کاربرد این پلتفرم را fبطور مختصر مورد بررسی قرار می دهیم.