نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی
  • خانه
  • خطاها
  • امنیت و ماشین مجازی جاوا کتابخانه هسته گسترده

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

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

شناخته شده ترین و در عین حال داغ ترین بحث این است که دارایی زیاد است یا کراس پلتفرم... قبلاً گفته شد که با استفاده از ماشین مجازی JVM که یک برنامه معمولی است که توسط سیستم عامل اجرا می شود و تمامی قابلیت های لازم را در اختیار اپلیکیشن های جاوا قرار می دهد، محقق می شود. از آنجایی که تمام پارامترهای JVM مشخص شده است، تنها کار باقی می ماند - پیاده سازی ماشین های مجازی در تمام پلت فرم های موجود و استفاده شده.

وجود ماشین مجازی بسیاری از خصوصیات جاوا را تعیین می کند، اما اکنون اجازه دهید به این سوال بپردازیم که آیا جاوا یک زبان کامپایل شده یا تفسیر شده است؟ در واقع از هر دو رویکرد استفاده می شود.

کد منبع هر برنامه جاوا با فایل های متنی معمولی نمایش داده می شود که می توانند در هر ویرایشگر متن یا ابزار توسعه تخصصی ایجاد شوند و پسوند جاوا. این فایل ها به کامپایلر جاوا وارد می شوند که آنها را به بایت کد جاوا مخصوص ترجمه می کند. این مجموعه فشرده و کارآمد از دستورالعمل ها است که توسط JVM پشتیبانی می شود و بخشی جدایی ناپذیر از پلت فرم جاوا است.

خروجی کامپایلر در فایل های باینری با پسوند .class ذخیره می شود. یک برنامه جاوا متشکل از چنین فایل هایی به ورودی ماشین مجازی وارد می شود که شروع به اجرای آنها یا تفسیر آنها می کند، زیرا خود یک برنامه است.

بسیاری از توسعه دهندگان در ابتدا به شدت از شعار جسورانه Sun "یک بار بنویس، همه جا اجرا کن" انتقاد کردند و ناسازگاری ها و ناهماهنگی های بیشتری را در پلتفرم های مختلف آشکار کردند. با این حال، باید اعتراف کرد که آنها به سادگی بیش از حد بی تاب بودند. جاوا به تازگی متولد شده است و اولین نسخه های مشخصات به اندازه کافی جامع نبودند.

به زودی، Sun به این نتیجه رسید که انتشار آزادانه مشخصات (همانطور که مدت ها قبل از جاوا انجام می شد) کافی نیست. همچنین لازم است رویه های خاصی برای بررسی محصولات جدید از نظر مطابقت با استانداردها ایجاد شود. اولین آزمایش از این دست برای JVM فقط شامل حدود 600 چک بود، یک سال بعد تعداد آنها به ده هزار رسید و از آن زمان تاکنون در حال افزایش است (این آزمایش بود که MS IE 4.0 نمی توانست در یک زمان قبول کند). البته، نویسندگان ماشین‌های مجازی همواره در حال بهبود آن‌ها، حذف خطاها و بهینه‌سازی کار خود بوده‌اند. با این حال، هر فناوری، حتی یک فناوری بسیار خوب، برای ایجاد یک پیاده سازی با کیفیت بالا به زمان نیاز دارد. Java 2 Micro Edition (J2ME) در حال حاضر مسیر توسعه مشابهی را طی می‌کند، اما در ادامه به آن خواهیم پرداخت.

مهمترین ویژگی بعدی شی گرایی جاوا است که همیشه در همه مقالات و مطبوعات ذکر شده است. خود رویکرد شی گرا (OOP) در سخنرانی بعدی مورد بحث قرار می گیرد، اما مهم است که تأکید شود که در جاوا تقریباً همه چیز در قالب اشیاء پیاده سازی می شود - رشته ها و جریان های داده، شبکه، کار با تصاویر، با رابط کاربری. ، رسیدگی به خطا و غیره از این گذشته، هر برنامه جاوا مجموعه ای از کلاس ها است که انواع جدیدی از اشیاء را توصیف می کند.

بحث مفصلی از مدل شی جاوا در طول دوره انجام می شود، با این حال، ما ویژگی های اصلی را بیان می کنیم. اول از همه، سازندگان ارث چندگانه را رها کردند. تصمیم گرفته شد که برنامه ها را بیش از حد پیچیده و مبهم کند. این زبان از یک رویکرد جایگزین استفاده می کند - نوع خاصی از "رابط". در سخنرانی مربوطه به تفصیل مورد بحث قرار گرفته است.

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

فقط 8 نوع داده در جاوا وجود دارد که شی نیستند. آنها از همان نسخه اول تعریف شده اند و هرگز تغییر نکرده اند. اینها پنج نوع عدد صحیح هستند: بایت، کوتاه، int، طولانی و همچنین کاراکتر char. سپس دو نوع کسری شناور و مضاعف و در نهایت نوع بولی بولی. به این گونه انواع ساده یا ابتدایی (از ابتدایی انگلیسی) می گویند و در سخنرانی در مورد انواع داده ها به تفصیل مورد بحث قرار می گیرند. همه انواع دیگر شی یا مرجع هستند (eng. مرجع).

به دلایلی، نحو جاوا بسیاری را گمراه کرده است. این واقعاً مبتنی بر نحو زبان های C / C ++ است، بنابراین اگر به کد منبع برنامه های نوشته شده در این زبان ها و در جاوا نگاه کنید، بلافاصله نمی توانید بفهمید که کدام یک از آنها نوشته شده است. کدام زبان. بنا به دلایلی، این دلایل زیادی به وجود آورد تا فکر کنیم جاوا یک C ++ ساده شده با ویژگی های اضافی مانند جمع آوری زباله است. ما در زیر به زباله‌گیر خودکار نگاه می‌کنیم، اما این اشتباه بزرگی است که فکر کنیم جاوا همان زبان C ++ است.

البته، هنگام توسعه یک فناوری جدید، نویسندگان جاوا به دلایل مختلفی به یک زبان برنامه نویسی گسترده متکی بودند. اول اینکه خودشان C++ را ابزار اصلی خود در آن زمان می دانستند. ثانیاً، چرا در حالی که یک مورد قدیمی کاملاً مناسب وجود دارد، چیزی جدید ارائه دهیم؟ در نهایت، بدیهی است که نحو ناآشنا توسعه دهندگان را ترسانده و به طور قابل توجهی معرفی یک زبان جدید را پیچیده می کند، و پس از همه، جاوا باید در سریع ترین زمان ممکن فراگیر می شد. بنابراین، نحو فقط کمی ساده شد تا از ساختارهای بیش از حد گیج کننده جلوگیری شود.

اما، همانطور که قبلا ذکر شد، C ++ اساسا برای وظایف جدید تعیین شده توسط توسعه دهندگان از شرکت Sun نامناسب بود، بنابراین مدل جاوا بازسازی شد و مطابق با اهداف کاملاً متفاوت بود. سخنرانی های بیشتر به تدریج تفاوت های خاصی را آشکار خواهند کرد.

در مورد مدل شی، آن را بیشتر بر اساس زبان هایی مانند Smalltalk از IBM، یا زبان Simula که در دهه 60 در مرکز محاسبات نروژی توسعه یافته بود، الگوبرداری شد، که توسط خالق جاوا، جیمز گاسلینگ، به آن اشاره شده است.

یکی دیگر از ویژگی های مهم جاوا - سهولت یادگیری و توسعه - نیز امتیازات بحث برانگیزی دریافت کرد. در واقع، نویسندگان زحمت کشیدند تا برنامه نویسان را از رایج ترین اشتباهاتی که حتی توسعه دهندگان با تجربه C / C ++ گاهی اوقات مرتکب می شوند، نجات دهند. و اولین مکان در اینجا توسط کار با حافظه اشغال شده است.

در جاوا، از همان ابتدا، مکانیزم جمع آوری زباله خودکار(از زباله جمع کن انگلیسی). فرض کنید برنامه مقداری شی ایجاد می کند، با آن کار می کند و سپس لحظه ای فرا می رسد که دیگر به آن نیازی نیست. لازم است حافظه اشغال شده را آزاد کنید تا در عملکرد عادی سیستم عامل اختلال ایجاد نشود. در C / C ++، این باید به صراحت از برنامه انجام شود. بدیهی است که با این رویکرد، دو خطر وجود دارد - یا یک شی را که شخص دیگری به آن نیاز دارد حذف کنید (و اگر واقعاً به آن دسترسی پیدا کنید، خطایی رخ می دهد) یا یک شی که غیرضروری شده است را حذف نکنید، که به معنای نشت حافظه است. این است که برنامه شروع به مصرف رم بیشتر و بیشتر می کند.

هنگام توسعه در جاوا، برنامه نویس اصلاً به آزاد کردن حافظه فکر نمی کند. خود ماشین مجازی تعداد ارجاعات به هر شی را می شمارد و اگر صفر شود، چنین شیئی برای پردازش توسط زباله گرد علامت گذاری می شود. بنابراین، برنامه نویس فقط باید مطمئن شود که هیچ ارجاعی به اشیاء غیر ضروری وجود ندارد. جمع‌آورنده زباله یک رشته اجرایی پس‌زمینه است که به طور منظم اشیاء موجود را اسکن می‌کند و آن‌هایی را که دیگر مورد نیاز نیستند حذف می‌کند. شما نمی توانید به هیچ وجه روی کار جمع کننده زباله از برنامه تأثیر بگذارید، فقط می توانید به صراحت عبور بعدی آن را با استفاده از یک تابع استاندارد آغاز کنید. واضح است که این امر توسعه برنامه ها را به خصوص برای برنامه نویسان تازه کار بسیار ساده می کند.

با این حال، توسعه دهندگان با تجربه از این واقعیت ناراضی بودند که نمی توانستند تمام اتفاقاتی که برای سیستمشان می افتد را به طور کامل کنترل کنند. اطلاعات دقیقی وجود ندارد که دقیقاً چه زمانی یک شی که غیر ضروری شده است حذف می شود، چه زمانی رشته جمع کننده زباله شروع به کار می کند (و بنابراین منابع سیستم را اشغال می کند) و غیره. اما، با تمام احترامی که برای تجربه چنین برنامه نویسانی قائل هستیم، باید توجه داشت که تعداد زیادی از خرابی های برنامه های نوشته شده در C / C ++ ناشی از کار نادرست با حافظه است، و گاهی اوقات این اتفاق می افتد حتی با محصولات گسترده بسیار شرکت های جدی

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

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

علاوه بر معرفی زباله جمع کن، اقدامات دیگری نیز برای تسهیل توسعه انجام شده است. برخی از آنها قبلا ذکر شده است - رد وراثت چندگانه، ساده سازی نحو، و غیره. توانایی ایجاد برنامه های کاربردی چند رشته ای در اولین نسخه جاوا پیاده سازی شد (مطالعات نشان داده است که این برای کاربران بسیار راحت است، و استانداردهای موجود مبتنی بر سیستم های تله تایپ هستند که سال ها پیش منسوخ شده اند). سایر ویژگی ها در سخنرانی های بعدی مورد بحث قرار خواهند گرفت. با این حال، مدت هاست که به طور کلی پذیرفته شده است که ساخت و نگهداری سیستم ها در جاوا در واقع آسان تر از C / C ++ است. با این حال، با این حال، این زبان ها برای اهداف مختلف ایجاد شده اند و هر کدام مزایای غیرقابل انکار خود را دارند.

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

اول، اینها قوانین کار با حافظه هستند. قبلا گفته شد که پاکسازی حافظه به صورت خودکار انجام می شود. رزرو آن نیز توسط JVM تعیین می شود، نه توسط کامپایلر، یا به صراحت از برنامه؛ توسعه دهنده فقط می تواند نشان دهد که می خواهد یک شی جدید دیگر ایجاد کند. اشاره گر به آدرس های فیزیکی در اصل وجود ندارد.

ثانیاً، وجود یک مترجم ماشین مجازی، قطع کردن کدهای خطرناک را در هر مرحله از کار بسیار آسان‌تر می‌کند. بایت کد ابتدا در سیستم بارگذاری می شود، معمولاً به صورت فایل های کلاس. JVM به دقت بررسی می‌کند که همه آنها از قوانین امنیتی عمومی جاوا پیروی می‌کنند و اینکه مهاجمان از طریق راه‌های دیگر ایجاد نکرده‌اند (و اگر در انتقال خراب نشده باشند). سپس، در طول اجرای برنامه، مفسر به راحتی می تواند اعتبار هر عمل را بررسی کند. قابلیت‌های کلاس‌هایی که از یک دیسک محلی یا از طریق شبکه بارگذاری شده‌اند به‌طور قابل توجهی متفاوت است (کاربر می‌تواند به راحتی حقوق خاصی را اختصاص داده یا حذف کند). به عنوان مثال، اپلت ها هرگز به طور پیش فرض به سیستم فایل محلی دسترسی نخواهند داشت. چنین محدودیت های داخلی در تمام کتابخانه های استاندارد جاوا یافت می شود.

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

مجموع ویژگی های توصیف شده جاوا این امکان را فراهم می کند که ادعا کنیم این زبان برای توسعه برنامه های کاربردی اینترنت و اینترانت (شبکه های شرکت داخلی) بسیار مناسب است.

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

بنابراین، بیایید خلاصه کنیم. پلتفرم جاوا دارای مزایای زیر است:

  • قابل حمل بودن یا کراس پلتفرم ;
  • شی گرایی، یک مدل شی کارآمد ایجاد شده است.
  • نحو آشنای C / C ++؛
  • مدل امنیتی داخلی و شفاف؛
  • جهت گیری به وظایف اینترنتی، برنامه های کاربردی شبکه توزیع شده؛
  • پویایی، سهولت توسعه و افزودن ویژگی های جدید؛
  • سهولت یادگیری

اما نباید تصور کرد که یادگیری آسانتر به این معنی است که شما اصلاً نیازی به یادگیری زبان ندارید. نوشتن برنامه های واقعاً خوب، ساختن سیستم های بزرگ و پیچیده، مستلزم درک کاملی از تمام مفاهیم اساسی جاوا و کتابخانه های مورد استفاده است. این دوره در مورد این است.

نسخه ها و محصولات اصلی جاوا

بیایید فوراً رزرو کنیم که محصولات در اینجا به معنای راه حل های نرم افزاری Sun هستند که "اجرای مرجع" هستند.

بنابراین، جاوا برای اولین بار در 23 می 1995 معرفی شد. محصولات اصلی موجود در آن زمان در قالب نسخه های بتا عبارت بودند از:

  • مشخصات زبان جاوا، JLS، مشخصات زبان جاوا (توصیف واژگان، انواع داده ها، ساختارهای اساسی و غیره)؛
  • مشخصات JVM
  • کیت توسعه جاوا، JDK - یک ابزار توسعه‌دهنده که عمدتاً از برنامه‌های کاربردی، کتابخانه‌های کلاس استاندارد و دموها تشکیل شده است.

مشخصات زبان به قدری خوب نوشته شده بود که تا به امروز عملاً بدون تغییر استفاده می شود. البته، تعداد زیادی شفاف سازی، توضیحات مفصل تری انجام شد، برخی ویژگی های جدید اضافه شد (به عنوان مثال، اعلام کلاس های داخلی)، اما مفاهیم اساسی بدون تغییر باقی می ماند. این دوره به شدت بر مشخصات زبان متکی است.

مشخصات JVM در درجه اول برای سازندگان ماشین مجازی در نظر گرفته شده است و بنابراین برنامه نویسان جاوا به سختی از آن استفاده می کنند.

JDK مدت‌هاست که یک ابزار اصلی توسعه اپلیکیشن بوده است. این شامل هیچ ویرایشگر متنی نیست، اما فقط بر روی فایل های جاوا موجود کار می کند. کامپایلر با ابزار جاوا (کامپایلر جاوا) نشان داده می شود. ماشین مجازی توسط جاوا پیاده سازی می شود. برای راه اندازی آزمایشی اپلت ها، یک ابزار ویژه به نام appletviewer وجود دارد. در نهایت، یک ابزار javadoc برای تولید خودکار اسناد از کد منبع ارائه شده است.

نسخه اول فقط شامل 8 کتابخانه استاندارد بود:

  • java.lang - کلاس های پایه مورد نیاز برای عملکرد هر برنامه (نام مخفف زبان است).
  • java.util - بسیاری از کلاس های کمکی مفید
  • java.applet - کلاس هایی برای ایجاد اپلت.
  • java.awt، java.awt.peer - کتابخانه ای برای ایجاد یک رابط کاربری گرافیکی (GUI)، به نام Abstract Window Toolkit، AWT، که به تفصیل در سخنرانی 11 توضیح داده شده است.
  • java.awt.image - کلاس های اضافی برای کار با تصاویر.
  • java.io - کار با جریان ها و فایل ها.
  • java.net - شبکه.

بنابراین، همه کتابخانه ها با جاوا شروع می شوند، آنها کتابخانه های استاندارد هستند. همه موارد دیگر (شروع با com، org و غیره) می توانند در هر نسخه ای بدون پشتیبانی از سازگاری تغییر کنند.

نسخه نهایی JDK 1.0 در ژانویه 1996 منتشر شد.

بیایید بلافاصله سیستم نامگذاری نسخه را توضیح دهیم. نام نسخه شامل سه رقم است. اولین مورد همیشه 1 است. این بدان معنی است که سازگاری کامل بین تمام نسخه های 1.x.x حفظ می شود. یعنی برنامه ای که در یک JDK قدیمی نوشته شده است همیشه با موفقیت در برنامه جدیدتر اجرا می شود. سازگاری به عقب تا حد امکان حفظ می شود - اگر برنامه با JDK جدیدتر کامپایل شده باشد و هیچ کتابخانه جدیدی استفاده نشده باشد، در بیشتر موارد ماشین های مجازی قدیمی قادر خواهند بود چنین کدی را اجرا کنند.

رقم دوم از 0 به 4 تغییر کرده است (آخرین رقم در زمان ایجاد دوره). در هر نسخه، گسترش قابل توجهی از کتابخانه های استاندارد وجود داشت (212، 504، 1781، 2130 و 2738 - تعداد کلاس ها و رابط ها از 1.0 به 1.4)، و همچنین برخی از ویژگی های جدید به خود زبان اضافه شد. ابزارهای موجود در JDK نیز تغییر کرده اند.

در نهایت، رقم سوم نشان دهنده توسعه یک نسخه است. هیچ چیزی در زبان یا کتابخانه ها تغییر نمی کند، فقط خطاها حذف می شوند، بهینه سازی انجام می شود، آرگومان های کاربردی را می توان تغییر داد (اضافه کرد). بنابراین، آخرین نسخه JDK 1.0 1.0.2 است.

اگرچه با توسعه نسخه 1.x چیزی حذف نمی شود، البته برخی از توابع یا کلاس ها منسوخ شده اند. آنها منسوخ اعلام شده اند و اگرچه تا زمان اعلام نسخه 2.0 پشتیبانی خواهند شد (و هنوز چیزی در مورد آن شنیده نشده است)، استفاده از آنها توصیه نمی شود.

همراه با اولین موفقیت JDK 1.0، انتقاداتی نیز وارد شد. معایب اصلی توسعه دهندگان به شرح زیر بود. اول، البته، عملکرد است. اولین ماشین مجازی بسیار کند بود. این به این دلیل است که JVM در واقع یک مفسر است که همیشه کندتر از اجرای کد کامپایل شده اجرا می شود. با این حال، بهینه‌سازی موفقیت‌آمیز که این نقص را از بین می‌برد، همچنان در پیش بود. قابلیت های نسبتا ضعیف AWT، عدم کار با پایگاه های داده و موارد دیگر نیز مورد توجه قرار گرفت.

در دسامبر 1996، نسخه جدید JDK 1.1 معرفی شد و نسخه بتا بلافاصله برای دسترسی رایگان منتشر شد. نسخه نهایی در فوریه 1997 منتشر شد. چه چیزی در نسخه جدید جاوا اضافه شده است؟

البته به عملکرد توجه ویژه ای شده است. بسیاری از بخش‌های ماشین مجازی با استفاده از Assembler به جای C مانند قبل بهینه‌سازی و بازنویسی شده‌اند. علاوه بر این، از اکتبر 1996، Sun در حال توسعه محصول جدیدی است - کامپایلر Just-In-Time، JIT. وظیفه آن ترجمه بایت کد جاوا برنامه به کد "بومی" سیستم عامل است. به این ترتیب زمان راه اندازی برنامه افزایش می یابد، اما اجرا می تواند در برخی موارد تا 50 برابر تسریع شود! از جولای 1997، یک پیاده سازی برای ویندوز وجود دارد و JIT به صورت استاندارد با قابلیت غیرفعال کردن در JDK گنجانده شده است.

بسیاری از ویژگی های مهم جدید اضافه شده است. JavaBeans، فناوری معرفی شده در سال 1996، به شما امکان می دهد اجزای بصری ایجاد کنید که به راحتی در ابزارهای توسعه بصری ادغام شوند. JDBC (اتصال پایگاه داده جاوا) دسترسی به پایگاه های داده را فراهم می کند. RMI (Remote Method Invocation) ایجاد برنامه های کاربردی توزیع شده را آسان می کند. پشتیبانی و امنیت زبان ملی بهبود یافته است.

در سه هفته اول، JDK 1.1 بیش از 220000 بار و در کمتر از یک سال بیش از دو میلیون بار دانلود شد. در حال حاضر نسخه 1.1 کاملا منسوخ در نظر گرفته شده و توسعه آن در 1.1.8 متوقف شده است. با این حال، با توجه به این واقعیت که رایج ترین مرورگر MS IE هنوز فقط از این نسخه پشتیبانی می کند، همچنان برای نوشتن اپلت های کوچک استفاده می شود.

علاوه بر این، Sun شروع به ارائه Java Runtime Environment (JRE) در 11 مارس 1997 کرد. در واقع، این حداقل پیاده سازی یک ماشین مجازی است که برای اجرای برنامه های جاوا، بدون کامپایلر یا سایر ابزارهای توسعه لازم است. اگر کاربر فقط می خواهد برنامه ها را اجرا کند، این دقیقا همان چیزی است که او نیاز دارد.

همانطور که می بینید، نقطه ضعف اصلی پشتیبانی ضعیف از رابط کاربری گرافیکی (GUI) است. در دسامبر 1996، Sun و Netscape یک کتابخانه جدید به نام IFC (کلاس های بنیاد اینترنتی) را اعلام کردند که به طور کامل در جاوا توسط Netscape توسعه یافته است تا دقیقاً یک رابط پنجره ای پیچیده ایجاد کند. در آوریل 1997، اعلام شد که شرکت‌ها قصد دارند AWT Sun و IFC Netscape را برای ایجاد یک محصول جدید کلاس‌های Java Foundation، JFC، ترکیب کنند که شامل موارد زیر است:

  • پنجره بهبود یافته

زبان جاوا. معرفی.

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

نمی توان به یاد آورد که رادیو عمومی ملی تا به حال یک برنامه ده دقیقه ای را به یک زبان برنامه نویسی اختصاص داده است. خوب یا بد بستگی به دیدگاه دارد. و سرمایه گذاری 100 میلیون دلاری در تولید نرم افزار ایجاد شده با استفاده از یک زبان برنامه نویسی خاص؟! شرکت‌های تلویزیونی CNN، CNBC و سایر رسانه‌ها فقط در مورد اینکه چگونه زبان جاوا می‌تواند این کار را انجام دهد، صحبت می‌کنند و هنوز هم صحبت می‌کنند.

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

در ابتدا شکافی بین وعده های تبلیغاتی و امکانات واقعی زبان جاوا وجود داشت. همانطور که به بلوغ رسید، فناوری پایدارتر و قابل اعتمادتر شد و انتظارات به سطح معقولی کاهش یافت. جاوا اکنون به طور فزاینده ای برای ایجاد "میان افزار" استفاده می شود که ارتباط بین مشتریان و منابع سرور (مانند پایگاه های داده) را حفظ می کند.

در حالی که این برنامه‌های مهم بسیار زیاد نیستند، اما در این زمینه است که زبان جاوا به دلیل استقلال ماشین، قابلیت‌های چند رشته‌ای و برنامه‌نویسی شبکه، بیشترین کاربرد را دارد. علاوه بر این، جاوا در سیستم‌های تعبیه‌شده پیشتاز شد و به استانداردی واقعی برای دستگاه‌های قابل حمل، کیوسک‌های مجازی، رایانه‌های ماشین سواری و موارد مشابه تبدیل شد. با این حال، اولین تلاش ها برای بازنویسی برنامه های گسترده برای رایانه های شخصی در جاوا ناموفق بود - برنامه های حاصل کم مصرف و کند بودند. با آمدن نسخه جدید، برخی از این مشکلات برطرف شد و با این حال باید پذیرفت که کاربران به طور کلی نسبت به زبانی که برنامه های خریداری شده با آن نوشته می شوند، کاملا بی تفاوت هستند. ما معتقدیم که مزایای اصلی زبان جاوا به جای بازنویسی برنامه‌های موجود، از ایجاد انواع جدید دستگاه‌ها و برنامه‌ها ناشی می‌شود.

زبان جاوا به عنوان یک ابزار برنامه نویسی

چگونه زبان برنامه نویسی جاوا از وعده های تبلیغاتی خود فراتر رفت. این بدون شک یکی از بهترین زبان های موجود برای برنامه نویسان جدی است. جاوا پتانسیل تبدیل شدن به یک زبان برنامه نویسی عالی را دارد، اما احتمالاً اکنون خیلی دیر شده است. هنگامی که یک زبان برنامه نویسی جدید ظاهر می شود، مشکل ناخوشایند سازگاری با نرم افزارهای ایجاد شده قبلی بلافاصله ایجاد می شود. علاوه بر این، حتی اگر بتوان تغییراتی در این برنامه‌ها بدون تداخل با متن آن‌ها ایجاد کرد، برای سازندگان زبانی که مورد استقبال گرم مردم قرار گرفت، مانند جاوا، دشوار است که مستقیماً بگویند: «بله، ممکن است ما ساخته باشیم. یک اشتباه در توسعه نسخه X، اما نسخه Y بهتر خواهد بود." در نتیجه، در حالی که منتظر بهبودهای بیشتر هستیم، باید بگوییم که ساختار زبان جاوا در آینده نزدیک تغییر قابل توجهی نخواهد داشت.

سوال واضح این است: " چگونه زبان جاوا را بهبود بخشید؟"به نظر می رسد که این کار نه با بهبود خود زبان برنامه نویسی، بلکه با تغییر اساسی کتابخانه های برنامه های نوشته شده به زبان جاوا انجام شده است. Sun Microsystems همه چیز را تغییر داده است: شروع با نام توابع کتابخانه های فردی (با معنی تر کردن آنها) و روش‌های کار ماژول‌های گرافیکی (تغییر نحوه رسیدگی به رویدادها و بازنویسی جزئی برنامه‌های کاری)، و پایان دادن به ایجاد ویژگی‌های جدید زبان، مانند ابزارهای چاپ، که در جاوا 1.0 نبودند، که منجر به پلت فرم برنامه نویسی بسیار مفیدتر از تمام نسخه های قبلی زبان جاوا.

مایکروسافت محصول خود را با نام J ++ منتشر کرده است که مربوط به زبان جاوا است. J ++ هنگام اجرای بایت کد توسط یک ماشین مجازی جاوا (ماشین مجازی جاوا) تفسیر می شود، اما زبان ها رابط های مختلفی با کدهای خارجی دارند. زبان های J ++ و جاوا تقریباً یک نحو دارند. با این حال، مایکروسافت ساختارهای زبان دیگری ایجاد کرده است. همه آنها ارزش نسبتاً مشکوکی دارند، به استثنای Windows API. علاوه بر این واقعیت که این زبان ها دارای نحو یکسانی هستند، کتابخانه های اصلی آنها (رشته ها، ابزارهای کمکی، ابزارهای برنامه نویسی شبکه، ابزارهای چند رشته ای، کتابخانه های ریاضی و غیره) اساساً یکسان هستند.

با این حال، کتابخانه های گرافیکی، رابط کاربری و دسترسی به اشیا از راه دور بین این زبان ها کاملاً متفاوت است. مایکروسافت در حال حاضر دیگر از J ++ پشتیبانی نمی کند، زیرا زبان جدیدی به نام C# را توسعه داده است که شباهت های زیادی با جاوا دارد، اما از ماشین مجازی متفاوتی استفاده می کند. این کتاب J ++ یا C # را توصیف نمی کند.

مزایای زبان جاوا

1) یکی از مزیت های اصلی زبان جاوا این است استقلال از بستری که برنامه ها بر روی آن اجرا می شوند: همین کد را می توان تحت Windows، Solaris، Linux، Machintosh و غیره اجرا کرد.
این واقعاً زمانی ضروری است که برنامه ها از طریق اینترنت برای اجرای بعدی تحت سیستم عامل های مختلف دانلود شوند.

2) مزیت دیگر این است که نحو زبان جاوا مشابه نحو زبان C ++ است و یادگیری آن برای برنامه نویسانی که زبان های C و C ++ را می دانند دشوار نیست.... درست است، برای برنامه نویسانی که زبان ویژوال بیسیک را می دانند، این نحو ممکن است غیرعادی باشد.

اگر هرگز در C ++ برنامه نویسی نکرده اید، ممکن است برخی از اصطلاحات استفاده شده در این بخش برای شما واضح نباشد. در این صورت می توانید از آن صرف نظر کنید. زمانی که به پایان فصل 6 برسید، این اصطلاحات برای شما آشنا خواهند شد.

3) همچنین جاوا - زبان کاملاً شی گرا، حتی بیشتر از C ++... همه موجودات در جاوا، به استثنای چند نوع اولیه، مانند اعداد، شی هستند. (از آنجایی که توسعه پروژه های پیچیده با برنامه نویسی شی گرا آسان است، جایگزین برنامه نویسی ساخت یافته قدیمی می شود. اگر با برنامه نویسی شی گرا آشنا نیستید، فصل های 3-6 هر آنچه را که باید در مورد آن بدانید در اختیار شما قرار می دهد.)

با این حال، توسعه یک گویش دیگر، کمی بهبود یافته از زبان C ++ کافی نیست. بسیار مهم است که توسعه برنامه های بدون خطا در جاوا آسان تر از C ++ باشد. چرا؟ توسعه دهندگان جاوا برای مدت طولانی به این فکر کرده اند که چرا برنامه های نوشته شده در C ++ اینقدر مستعد خطا هستند. آنها زبان جاوا را با ابزاری برای از بین بردن امکان ایجاد برنامه هایی که رایج ترین خطاها را پنهان می کنند فراهم کردند. برای این کار زبان جاوا موارد زیر را انجام داده است.

4) امکان تخصیص صریح و آزادسازی حافظه حذف شده است.
حافظه جاوا به طور خودکار توسط جمع آوری زباله بازیابی می شود. برنامه نویس در برابر خطاهای مربوط به سوء استفاده از حافظه تضمین شده است.

5) آرایه های واقعی و محاسبات اشاره گر غیر مجاز را معرفی کرد.
در حال حاضر برنامه نویسان، در اصل، نمی توانند داده ها را از حافظه به دلیل استفاده نادرست از اشاره گرها پاک کنند.

6) امکان اشتباه گرفتن عملگر انتساب با عملگر مقایسه برابری از بین رفته است.
اکنون حتی نمی توانید عبارت if (ntries = 3) را کامپایل کنید. ... ... (برنامه نویسان ویژوال بیسیک ممکن است اصلاً متوجه هیچ مشکلی در اینجا نشوند، زیرا این خطا منشأ اکثر سوء تفاهمات در C و C ++ است).

7) ارث چندگانه مستثنی است. مفهوم جدیدی جایگزین آن شده است - رابطی که از زبان Objective C وام گرفته شده است.
این رابط تقریباً همه چیزهایی را که برنامه نویس می تواند از وراثت چندگانه به دست آورد، در اختیار برنامه نویس قرار می دهد، در حالی که از پیچیدگی مدیریت سلسله مراتب کلاس جلوگیری می کند.

ویژگی های زبان جاوا

ساده
تفسیر شد
توزیع شده است
قابل اعتماد
بی خطر
مستقل از ماشین
شی گرا
عملکرد بالا
چند رشته ای
پویا
معماری کامپیوتر مستقل

قبلاً در بخش آخر به برخی از این نکات پرداختیم. در این بخش، ما موارد زیر را ارائه خواهیم داد: نقل قول هایی از کتابچه راهنمای زبان جاوا که ویژگی های زبان را آشکار می کند. اجازه دهید نظرات خود را در مورد ویژگی های خاصی از زبان، بر اساس تجربه خودمان از کار با آخرین نسخه آن، با خوانندگان به اشتراک بگذاریم.

ساده

ما می‌خواستیم سیستمی ایجاد کنیم که برنامه‌نویسی آن آسان باشد، نیازی به آموزش اضافی نداشته باشد و استانداردهای برنامه‌نویسی و تمرین ایجاد شده را در نظر بگیرد. بنابراین، اگرچه ما زبان C ++ را برای این اهداف نامناسب می‌دانستیم، اما زبان جاوا به گونه‌ای طراحی شد که تا حد امکان شبیه به آن باشد تا سیستم در دسترس‌تر باشد. زبان جاوا فاقد بسیاری از ویژگی‌های نادر، مبهم و مبهم C ++ است که به نظر ما بیشتر از اینکه فایده داشته باشد ضرر دارد.

نحو جاوا در اصل یک نسخه پاک شده از سینتکس C ++ است. این زبان هیچ فایل هدر، محاسبات اشاره گر (و خود اشاره گر)، ساختار، اتحادیه، بارگذاری بیش از حد اپراتور، کلاس های پایه مجازی و غیره ندارد. (تفاوت های بین جاوا و C ++ در یادداشت های C ++ پراکنده در سراسر کتاب توضیح داده شده است.) با این حال، توسعه دهندگان به دنبال اصلاح تمام کاستی های زبان C ++ نبودند.

برای مثال، نحو دستور switch در زبان جاوا بدون تغییر باقی مانده است. با دانستن زبان C ++، حرکت به نحو زبان جاوا آسان خواهد بود.
اگر معمولا از یک محیط برنامه نویسی بصری (مانند ویژوال بیسیک) استفاده می کنید، زبان جاوا برای شما پیچیده به نظر می رسد.
نحو آن اغلب نسبتاً عجیب به نظر می رسد (اگرچه درک معنای عبارت دشوار نیست). مهمتر از آن، زبان جاوا به برنامه نویسی بسیار بیشتری نیاز دارد. زیبایی ویژوال بیسیک این است که محیط برنامه نویسی بصری آن به شما اجازه می دهد تا یک زیرساخت برنامه را تقریبا به صورت خودکار ایجاد کنید. دستیابی به نتیجه مشابه با جاوا نیاز به برنامه نویسی دستی دارد، اما منجر به برنامه های بسیار کوتاهتر می شود.

با این حال، نوع سومی از محیط برنامه نویسی وجود دارد که به شما امکان می دهد برنامه هایی را با استفاده از فناوری "کشیدن و رها کردن" ایجاد کنید.

یکی دیگر از جنبه های سادگی، ایجاز است. یکی از اهداف زبان جاوا ایجاد امکان توسعه برنامه هایی است که می توانند به طور کاملا مستقل بر روی ماشین های کوچک اجرا شوند. مترجم اصلی و امکانات پشتیبانی کلاس حدود 40 کیلوبایت حجم دارد. کتابخانه‌های استاندارد و ابزارهای نخ‌سازی (مخصوصاً میکروکرنل مستقل) 17 کیلوبایت دیگر نیاز دارند.
این یک موفقیت بزرگ است. البته توجه داشته باشید که کتابخانه های پشتیبانی از رابط کاربری گرافیکی بسیار بزرگتر هستند.

شی گرا

به زبان ساده، برنامه نویسی شی گرا یک تکنیک برنامه نویسی است که بر روی داده ها (یعنی اشیاء) و ابزارهای دسترسی به آنها تمرکز می کند. در قیاس با نجاری، صنعتگر شی گرا عمدتاً بر روی صندلی که می سازد متمرکز است و تنها در درجه دوم به ابزارهای مورد نیاز برای انجام این کار علاقه مند است. در عین حال، نجار غیر شی گرا فقط به ابزار خود فکر می کند. ویژگی های شی گرا جاوا و ++C اساساً یکسان هستند.

شی گرایی در 30 سال گذشته ارزش خود را ثابت کرده است و بدون آن تصور یک زبان برنامه نویسی مدرن غیرممکن است. در واقع، ویژگی های شی گرا زبان جاوا با زبان C ++ قابل مقایسه است. تفاوت اصلی آنها در مکانیسم وراثت چندگانه است که زبان جاوا بهترین راه حل را برای آن پیدا کرده است و همچنین در مدل متاکلاس زبان جاوا.

Reflection (فصل 5) و Object Serialization (فصل 12) به شما این امکان را می دهد که اشیاء و ابزارهای ثابتی را برای ایجاد رابط های کاربری گرافیکی از اجزای خارج از جعبه پیاده سازی کنید.

اگر هرگز به زبان های شی گرا برنامه نویسی نکرده اید، فصل های 4-6 را با دقت بخوانید. این فصل ها اصول برنامه نویسی شی گرا را پوشش می دهد و مزایای توسعه پروژه های پیچیده را نسبت به زبان های سنتی و رویه گرا مانند C یا Basic به شما نشان می دهد.

توزیع شده است

جاوا دارای یک کتابخانه بزرگ از برنامه های انتقال داده بر اساس TCP / IP (پروتکل کنترل انتقال / پروتکل اینترنت)، HTTP (پروتکل انتقال ابرمتن) یا FTP (پروتکل انتقال فایل). پروتکل انتقال فایل). برنامه های نوشته شده به زبان جاوا می توانند با استفاده از و اشیاء را از طریق شبکه باز کرده و به آنها دسترسی داشته باشندURL ها (موقعیت منبع واحد) به آسانی یک شبکه محلی هستند.

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

سرورها توسط بسیاری از سرورهای وب محبوب پشتیبانی می شوند. (شبکه در جلد دوم پوشش داده خواهد شد.) ارتباط بین اشیاء توزیع شده در جاوا توسط مکانیسم فراخوانی روش از راه دور ارائه می شود (این موضوع در جلد 2 نیز پوشش داده شده است).

قابل اعتماد

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

این ویژگی نیز بسیار مفید است. کامپایلر جاوا خطاهایی را تشخیص می دهد که زبان های دیگر فقط در زمان اجرا پیدا می کنند. علاوه بر این، برنامه نویسانی که ساعت های زیادی را صرف جستجوی خطایی کرده اند که باعث خرابی حافظه به دلیل یک اشاره گر نامعتبر شده است، بسیار خوشحال خواهند شد که اصولاً چنین مشکلاتی در زبان جاوا ایجاد نمی شود.

اگر قبلاً به زبان ویژوال بیسیک یا COBOL برنامه‌نویسی کرده‌اید که به صراحت از نشانگرها استفاده نمی‌کند، ممکن است متوجه نشوید که چرا اینقدر مهم است. برنامه نویسان C کمتر خوش شانس هستند. آنها برای دسترسی به رشته ها، آرایه ها، اشیا و حتی فایل ها به اشاره گر نیاز دارند. هنگام برنامه نویسی به زبان ویژوال بیسیک، هیچ یک از این موارد مورد نیاز نیست و برنامه نویس نباید نگران تخصیص حافظه برای این موجودیت ها باشد. از سوی دیگر، بسیاری از ساختارهای داده در یک زبان غیر اشاره گر بسیار دشوار است. برای ساختارهای رایج مانند رشته ها و آرایه ها، اشاره گر نیازی نیست. قدرت اشاره گرها فقط در جاهایی که نمی توانید بدون آنها کار کنید، مانند زمانی که لیست های پیوندی ایجاد می کنید، استفاده می شود. برنامه نویس جاوا برای همیشه از شر اشاره گرهای نامعتبر، تخصیص نادرست و نشت حافظه خلاص می شود.

بی خطر

زبان جاوا برای استفاده در یک محیط شبکه ای یا توزیع شده در نظر گرفته شده است. به همین دلیل به ایمنی توجه زیادی شده است. زبان جاوا به شما امکان می دهد سیستم هایی ایجاد کنید که از ویروس ها و دستکاری محافظت می شوند.

در چاپ اول نوشتیم: «هرگز نگو هرگز» و حق با ما بود. گروهی از کارشناسان امنیتی در دانشگاه پرینستون بلافاصله پس از عرضه اولین نسخه JDK، اولین باگ های امنیتی را در جاوا 1.0 کشف کردند. علاوه بر این، هم آنها و هم سایر متخصصان ادامه دادند و متعاقباً باگ های بیشتری را در مکانیسم های امنیتی تمام نسخه های بعدی زبان جاوا پیدا کردند.

از جنبه مثبت این وضعیت، تیم توسعه زبان جاوا تحمل صفر خود را برای هرگونه باگ امنیتی اعلام کرد و بلافاصله شروع به رفع مشکلات موجود در مکانیسم امنیتی اپلت کرد. به ویژه، Sun با انتشار مشخصات داخلی مفسر جاوا، یافتن باگ های امنیتی پنهان را بسیار آسان کرده است و کارشناسان مستقلی را برای یافتن آنها به خدمت گرفته است.

این احتمال را افزایش داد که هر گونه خطا در سیستم امنیتی به زودی کشف شود. در هر صورت، فریب دادن سیستم امنیتی زبان جاوا بسیار دشوار است. اشکالات یافت شده تاکنون تقریباً ظریف و (نسبتا) تعداد کمی بوده اند.

صفحه وب امنیتی Sun در آدرس زیر است: http://java.sun.com/sfaq/.

در اینجا برخی از موقعیت هایی که سیستم امنیتی جاوا از آنها جلوگیری می کند، آورده شده است.

1) سرریز پشته یک برنامه اجرایی، که توسط یک "کرم" بدنام در اینترنت پخش شده است.

2) آسیب به مناطق حافظه خارج از فضای اختصاص داده شده به فرآیند.

3) خواندن و نوشتن فایل های محلی با استفاده از یک کلاس لودر ایمن مانند مرورگر وب که دسترسی به چنین فایلی را ممنوع می کند.

همه این اقدامات امنیتی مناسب هستند و معمولاً بی عیب و نقص عمل می کنند، اما احتیاط هرگز آسیبی نمی بیند. اگرچه اشکالات یافت شده تا کنون به دور از اهمیت بودند، و جزئیات جستجوی آنها اغلب مخفی نگه داشته می شود، باید اعتراف کرد که احتمالاً هنوز اثبات ایمنی زبان جاوا غیرممکن است.

با گذشت زمان، حفاظت های جدیدی به زبان اضافه شد. با شروع نسخه 1.1، مفهوم کلاس های امضا شده دیجیتالی در زبان جاوا ظاهر شد. وقتی از یک کلاس با امضای دیجیتال استفاده می کنید، می توانید از نویسنده آن مطمئن باشید. اگر به آن اعتماد دارید، می توانید تمام امتیازات موجود در دستگاه خود را به این کلاس بدهید.

مکانیسم تحویل کد جایگزین مایکروسافت به فناوری ActiveX متکی است و برای امنیت فقط از امضای دیجیتال استفاده می کند. بدیهی است که این کافی نیست - هر کاربر نرم افزار مایکروسافت می تواند تأیید کند که برنامه های تولید کنندگان معروف اغلب خراب می شوند و در نتیجه خطر خراب شدن داده ها را ایجاد می کنند. امنیت جاوا بسیار قابل اعتمادتر از فناوری ActiveX است زیرا برنامه را از لحظه شروع به کار کنترل می کند و از آسیب رساندن به آن جلوگیری می کند.

معماری مستقل

کامپایلر یک فایل شی تولید می کند که فرمت آن به معماری کامپیوتر بستگی ندارد - برنامه کامپایل شده می تواند بر روی هر پردازنده تحت کنترل سیستم اجرای برنامه جاوا اجرا شود. برای انجام این کار، کامپایلر جاوا دستورات کد بایتی را تولید می کند که به معماری خاص رایانه بستگی ندارد. بایت کد به گونه ای طراحی شده است که می توان آن را به راحتی بر روی هر ماشینی تفسیر کرد یا در لحظه به کد وابسته به ماشین ترجمه کرد.

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

مستقل از ماشین

بر خلاف زبان های C و C ++، مشخصات جاوا جنبه های خاص پیاده سازی ندارد. هم اندازه انواع داده های پایه و هم عملیات حسابی روی آنها به خوبی تعریف شده است.

به عنوان مثال، int در جاوا همیشه به معنای یک عدد صحیح 32 بیتی است. در C و C ++، نوع int می تواند به معنای یک عدد صحیح 16 بیتی یا 32 بیتی و همچنین یک عدد صحیح با اندازه دلخواه باشد که توسط توسعه دهنده یک کامپایلر خاص انتخاب شده است. تنها محدودیت این است که اندازه نوع int نمی تواند کمتر از اندازه int کوتاه و اندازه int طولانی باشد. اندازه ثابت انواع عددی از بسیاری از مشکلات مربوط به اجرای برنامه ها در رایانه های مختلف جلوگیری می کند. داده‌های باینری در قالب ثابتی ذخیره و منتقل می‌شوند، که از سوء تفاهم‌های مرتبط با ترتیب بایت‌های مختلف در پلتفرم‌های مختلف نیز جلوگیری می‌کند (تعارض "اندیان بزرگ / اندیان کوچک"). رشته ها در قالب استاندارد یونیکد ذخیره می شوند.

کتابخانه ها که بخشی از سیستم هستند، یک رابط مستقل از ماشین را تعریف می کنند. به عنوان مثال، این زبان یک کلاس انتزاعی Window و پیاده سازی های آن را برای سیستم عامل های یونیکس، ویندوز و مکینتاش فراهم می کند.

هر کسی که تا به حال سعی کرده است برنامه ای بنویسد که روی ویندوز، مکینتاش و ده نسخه یونیکس به خوبی کار کند، می داند که این کار بسیار دشواری است. نسخه جاوا تلاش قهرمانانه ای برای حل این مشکل با ارائه یک جعبه ابزار ساده انجام داد که عناصر رابط کاربری رایج را با طیف گسترده ای از پلتفرم های نرم افزاری تطبیق می دهد. متأسفانه کتابخانه ای که زحمت زیادی کشیده بود، اجازه نداد در بسترهای مختلف به نتایج قابل قبولی برسیم. (در همان زمان، خطاهای مختلفی در برنامه های گرافیکی در پلتفرم های مختلف ظاهر شد.)

با این حال، این تنها آغاز بود. در بسیاری از کاربردها، استقلال ماشین بسیار مهمتر از پیچیدگی یک رابط کاربری گرافیکی است. اینها برنامه هایی هستند که از Java 1.0 بهره مند شده اند. با این حال، جعبه ابزار رابط گرافیکی کاربر اکنون کاملاً بازطراحی شده است و دیگر به رابط کاربری رایانه میزبان وابسته نیست. نسخه جدید از نسخه های قبلی معنادارتر و به نظر ما برای کاربر جذاب تر است.

تفسیر شد

مفسر جاوا را می توان به هر ماشینی فرستاد و بایت کد را مستقیماً روی آن اجرا کرد. از آنجایی که ویرایش لینک فرآیند ساده‌تری است، توسعه نرم‌افزار می‌تواند بسیار سریع‌تر و کارآمدتر شود.

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

عملکرد بالا

در حالی که بایت کدهای تفسیر شده عموماً از نظر عملکرد بیش از اندازه کافی هستند، شرایطی وجود دارد که حتی عملکرد بالاتری مورد نیاز است. بایت کدها را می توان به سرعت (در زمان اجرا) به کدهای ماشین برای یک پردازنده خاص که برنامه روی آن اجرا می شود ترجمه کرد.

اگر از مفسر برای اجرای کدهای بایت استفاده می شود، نباید از عبارت "عملکرد بالا" استفاده شود. با این حال، در بسیاری از پلتفرم‌ها، نوع متفاوتی از کامپایل ممکن است که توسط کامپایلرهای به موقع-JIT ارائه شده است. آنها بایت کد را به کد وابسته به ماشین ترجمه می کنند، نتیجه را در حافظه ذخیره می کنند و سپس در صورت نیاز آن را فراخوانی می کنند. از آنجایی که تفسیر فقط یک بار انجام می شود، این رویکرد سرعت کار را چندین برابر افزایش می دهد.

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

چند رشته ای

تعامل و اجرای بهتر برنامه را فراهم می کند.

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

پویا

از بسیاری جهات، جاوا پویاتر از C یا C ++ است. به گونه ای طراحی شده است که به راحتی با یک محیط در حال تغییر سازگار شود. روش‌ها و اشیاء جدید را می‌توان آزادانه به کتابخانه‌ها اضافه کرد، بدون اینکه آسیبی به آنها وارد شود. زبان جاوا کسب اطلاعات در مورد پیشرفت یک برنامه را آسان می کند.

این بسیار مهم است زمانی که شما نیاز به اضافه کردن کد به یک برنامه در حال اجرا دارید. نمونه بارز آن کدی است که از اینترنت برای اجرا توسط مرورگر دانلود می شود. در جاوا 1.0 دریافت اطلاعات در مورد پیشرفت برنامه در حال اجرا آسان نبود، اما نسخه فعلی زبان جاوا ساختار و رفتار اشیاء برنامه در حال اجرا را در معرض دید برنامه نویس قرار می دهد.
این برای سیستم هایی که نیاز به تجزیه و تحلیل اشیاء در طول اجرای برنامه دارند بسیار ارزشمند است. چنین سیستم هایی شامل سازندگان رابط کاربری گرافیکی، دیباگرهای هوشمند، پلاگین ها و پایگاه داده های اشیا هستند.

جاوا و اینترنت

ایده ساده است - کاربران بایت کدهای جاوا را از اینترنت دانلود کرده و آنها را بر روی دستگاه خود اجرا می کنند. برنامه های جاوا که روی مرورگرهای وب اجرا می شوند اپلت نامیده می شوند. برای استفاده از اپلت، به یک مرورگر وب با قابلیت جاوا نیاز دارید که بتواند کدهای بایت را تفسیر کند. منبع زبان جاوا توسط Sun مجوز داده شده است، که اصرار دارد که خود زبان و ساختار کتابخانه های اصلی آن بدون تغییر باقی بمانند. متاسفانه در واقعیت اینطور نیست. نسخه های مختلف مرورگرهای Netscape و Internet Explorer از نسخه های مختلف زبان جاوا پشتیبانی می کنند که برخی از آنها به طور قابل توجهی قدیمی هستند. این وضعیت تاسف بار موانع بیشتری را در توسعه اپلت هایی ایجاد می کند که از آخرین نسخه زبان جاوا بهره می برند. برای رفع این مشکل، Sun افزونه جاوا را توسعه داده است که مدرن ترین محیط را برای اجرای برنامه های جاوا بر اساس مرورگرهای Netscape و Internet Explorer فراهم می کند.

بارگذاری یک اپلت مانند جاسازی یک تصویر در یک صفحه وب است. اپلت بخشی از صفحه می شود و متن در فضایی که اشغال می کند می پیچد. با این حال، تفاوت این است که تصویر اکنون زنده است. به دستورات کاربر پاسخ می دهد، ظاهر خود را تغییر می دهد و انتقال داده را بین رایانه ای که اپلت در آن مشاهده می شود و رایانه ای که اپلت را اجرا می کند، فراهم می کند.

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

در شکل 1.1 نمونه خوبی از یک صفحه وب پویا را نشان می دهد که محاسبات پیچیده را انجام می دهد و از یک اپلت برای نمایش مولکول ها استفاده می کند. برای درک بهتر ساختار مولکول، می توانید آن را بچرخانید یا با استفاده از ماوس روی تصویر زوم کنید. چنین دستکاری‌هایی را نمی‌توان در صفحات وب ثابت انجام داد، اما اپلت‌ها آن را ممکن می‌سازند. (این اپلت را می توان در http://jmol.sourceforge.net یافت.)

برنج. 1.1. اپلت جمول

اپلت ها را می توان برای افزودن دکمه ها و فیلدهای متنی جدید به یک صفحه وب استفاده کرد. با این حال، این اپلت ها به کندی از طریق خط تلفن بارگیری می شوند.

تقریباً همین کار را می توان با استفاده از فرم های HTML پویا، زبان نشانه گذاری فرامتن (HTML) یا زبان برنامه نویسی مانند جاوا اسکریپت انجام داد. البته، اولین اپلت ها برای انیمیشن در نظر گرفته شده بودند: چرخاندن کره، شخصیت های کارتونی رقصنده، متن های خیالی و غیره. با این حال، بیشتر موارد فوق می توانند GIF های متحرک را انجام دهند و HTML پویا، همراه با اسکریپت، بسیار بیشتر از اپلت ها انجام می دهد.

در نتیجه ناسازگاری مرورگرها و بارگذاری ناسازگار از طریق اتصالات شبکه کند، اپلت‌هایی که صفحات وب را هدف قرار می‌دهند پیشرفت بزرگی نبوده است. در شبکه های محلی (اینترانت) وضعیت کاملا متفاوت است. آنها معمولاً با پهنای باند مشکلی ندارند، بنابراین زمان بارگذاری اپلت ها بی اهمیت است. در شبکه محلی می توانید مرورگر مورد نظر را انتخاب کنید یا از برنامه Java Plug-In استفاده کنید. کارمندان نمی توانند نرم افزار تحویل داده شده از طریق شبکه را به مکان اشتباهی منتقل کنند یا آن را به اشتباه نصب کنند، و یک sysadmin نیازی به دور زدن همه ماشین های مشتری و به روز رسانی نرم افزار روی آنها ندارد. تعداد زیادی از برنامه های طراحی شده برای حسابداری موجودی، برنامه ریزی تعطیلات، بازپرداخت هزینه سفر و موارد مشابه توسط بسیاری از شرکت ها در قالب اپلت های مبتنی بر مرورگر ایجاد شده است.

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

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

آیا شما یک توسعه دهنده مشتاق جاوا هستید؟ این صفحه مروری بر فناوری های اصلی جاوا و جایگاه آنها در توسعه نرم افزار مدرن ارائه می دهد. این صفحه با پیوندهایی به مقالات مقدماتی developerWorks در مورد این موضوع و موضوعات مرتبط، سایر مطالب آموزشی، و دانلودها و محصولات IBM، نقطه شروع بسیار خوبی برای یادگیری جاوا است.

"فناوری های جاوا" چیست؟

جاوا هم یک زبان برنامه نویسی و هم یک پلتفرم است.

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

دوم، جاوا است پلت فرم نرم افزاری، که نسخه هایی از آن برای سیستم های سخت افزاری مختلف عرضه می شود. سه نسخه از جاوا وجود دارد (به بخش Java Platform Editions در زیر مراجعه کنید). این پلتفرم شامل JVM و رابط برنامه نویسی برنامه جاوا (API) است که مجموعه گسترده ای از اجزای نرم افزاری آماده (کلاس ها) است که توسعه و استقرار اپلت ها و برنامه ها را تسهیل می کند. Java API بسیاری از جنبه های توسعه جاوا، از جمله دستکاری اشیاء اساسی، برنامه نویسی شبکه، امنیت، تولید XML و خدمات وب را پوشش می دهد. API به صورت مجموعه ای از کتابخانه ها به نام سازماندهی شده است در بسته بندی هاکه شامل کلاس ها و واسط هایی برای حل مسائل مرتبط می باشد.

علاوه بر API، هر پیاده سازی کامل پلت فرم جاوا باید شامل موارد زیر باشد:

  • ابزارهای توسعه دهنده برای کامپایل، اجرا، نظارت، اشکال زدایی و مستندسازی برنامه ها.
  • مکانیسم‌های استاندارد برای استقرار برنامه‌ها در محیط کاربری.
  • ابزارهایی که به شما امکان ایجاد رابط های کاربری گرافیکی پیچیده را می دهند.
  • کتابخانه های یکپارچه سازی برای دسترسی برنامه ای به پایگاه های داده و دستکاری اشیاء از راه دور.

JVM همچنین یک فریمورک اثبات شده برای اجرای برنامه های کاربردی نوشته شده به زبان هایی غیر از جاوا است. به طور خاص، Groovy، Scala و پیاده‌سازی‌های تخصصی Ruby و Python به توسعه‌دهندگان توانایی اجرای زبان‌های پویا و کاربردی در JVM را می‌دهند (برای اطلاعات بیشتر، ببینید رابطه جاوا با زبان‌های پویا و برنامه‌نویسی تابعی چیست؟) .

زبان جاوا توسط Sun Microsystems توسعه یافته است. در حال حاضر، توسعه فناوری‌های جاوا، از جمله کار بر روی مشخصات، پیاده‌سازی مرجع و تست‌های سازگاری، تحت کنترل سازمان غیرانتفاعی باز JCP (فرآیند جامعه جاوا) انجام می‌شود که توسعه‌دهندگان جاوا و دارندگان مجوز را گرد هم می‌آورد. در سال 2007، Sun یک نسخه رایگان از جاوا را منتشر کرد که شامل اجزای اصلی پلتفرم است، تحت مجوز GNU GPL v2 (GPLv2). اطلاعات بیشتر در مورد این نسخه را می توانید در بخش جاوا و توسعه نرم افزار آزاد بخوانید.

چرا باید جاوا را یاد بگیرید؟

مزیت اصلی زبان جاوا قابل حمل بودن برنامه های جاوا است. قابلیت اجرا بر روی هر پلتفرم سخت افزاری و سیستم عامل، زیرا همه JVM ها، صرف نظر از اینکه در چه پلتفرمی اجرا می شوند، قادر به اجرای یک بایت کد هستند.

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

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

  • رویکرد IBM را کاوش کنید و بیاموزید که چگونه SOA می‌تواند به شما در ایجاد برنامه‌های کاربردی ناهمگن با عملکرد از منابع متعدد، چه در داخل و چه در خارج از شرکت، کمک کند، در نتیجه از فرآیندهای تجاری افقی پشتیبانی می‌کند. IBM طیف وسیعی از کاربران تجاری و متخصصان فناوری اطلاعات را برای کمک به شما در شروع کار با این فناوری فراهم می کند.
  • یک رویکرد مبتنی بر مؤلفه ارائه شده توسط IBM است که طیف کاملی از فرصت‌ها را برای تغییر استراتژیک فراهم می‌کند. راه حل های ارائه شده بر اساس نرم افزار انعطاف پذیر، توسعه پذیر، مبتنی بر استانداردهای باز (از جمله جاوا) و زیرساخت سخت افزاری است.

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

  • جاوا SE (پلتفرم جاوا، نسخه استاندارد)... با استفاده از Java SE، می توانید برنامه های جاوا را برای دسکتاپ و سرورها بسازید و استقرار دهید و نرم افزارها و برنامه های تعبیه شده را برای سیستم های بلادرنگ توسعه دهید. نسخه Java SE شامل کلاس‌های مورد نیاز برای ایجاد سرویس‌های وب و اجزای اصلی Java EE (جاوا پلتفرم، نسخه Enterprise) است. نسخه فعلی پلتفرم جاوا SE، جاوا SE 6 است که با نام موستانگ نیز شناخته می شود. با این حال، بسیاری از توسعه دهندگان هنوز از Java SE 5 (جاوا 5.0 یا "Tiger") استفاده می کنند.
    • برای یک نمای کلی عالی از ویژگی های Java SE 5، به مقالات ستون مراجعه کنید. بسیاری از جنبه های برنامه نویسی برای پلت فرم Java SE 5، که بسیاری از برنامه های کاربردی موجود برای آن ساخته شده اند، هنوز به جاوا SE 6 مرتبط هستند.
    • این مقاله ویژگی های جدید Java SE 6 را برای نظارت و ارزیابی عملکرد برنامه توضیح می دهد.
    • این مقاله مقدمه‌ای بر زبان برنامه‌نویسی ارائه می‌دهد که بر روی پلتفرم Java SE 6 اجرا می‌شود و برنامه‌نویسی رابط‌های کاربری پیچیده را ساده می‌کند.
    • این مجموعه دو قسمتی با عنوان مقدمه ای بر API ارائه شده توسط Java SE 6 است که به برنامه های جاوا اجازه می دهد تا کدهای اسکریپت پویا را اجرا کنند و بالعکس. ...
  • Java EE (جاوا پلتفرم، نسخه Enterprise)... این نسخه سازمانی پلتفرم به توسعه دهندگان کمک می کند تا برنامه های جاوا قابل حمل، قابل اعتماد، مقیاس پذیر و ایمن را در سمت سرور بسازند و به کار گیرند. با تکیه بر قابلیت های Java SE، Java EE خدمات وب، مدل های مؤلفه، راه دور و API های مدیریتی را برای پیاده سازی نرم افزار سازمانی در SOA و Web 2.0 ارائه می دهد.
    • مقالات و برای مروری مقدماتی از قابلیت های آخرین نسخه پلت فرم Java EE را بخوانید.
    • سری را بررسی کنید - یک چارچوب محبوب برای ساختن برنامه های کاربردی سبک وزن و قابل اعتماد Java EE.
    • برای اطلاعات بیشتر در مورد Java EE، به مقالات در ستون مراجعه کنید.
    • مقالات مجموعه شروع: مهاجرت به پلتفرم جاوا به طور خاص برای توسعه دهندگان دات نت، سرویس گیرنده/سرور ویندوز و ASP نوشته شده است تا به آنها در مهاجرت به جاوا کمک کند.
  • Java ME (پلتفرم جاوا، نسخه میکرو)... Java ME یک محیط زمان اجرا برای برنامه های کاربردی ساخته شده برای طیف گسترده ای از سیستم های تلفن همراه و جاسازی شده مانند تلفن های همراه، PDA ها، ست تاپ باکس ها و چاپگرها فراهم می کند. این نسخه پلتفرم رابط های کاربری انعطاف پذیر، یک مدل امنیتی قوی، طیف کاملی از پروتکل های شبکه داخلی، و پشتیبانی قدرتمند از شبکه و برنامه های آفلاین بارگذاری شده پویا را ارائه می دهد. برنامه های کاربردی مبتنی بر مشخصات Java ME می توانند بر روی دستگاه های مختلف اجرا شوند و همچنان می توانند از قابلیت های سیستم خود استفاده کنند.

اجزای اصلی پلتفرم جاوا چه فناوری هایی هستند؟

منطقه developerWorks Java شامل جاوا است. در زیر برخی از مؤلفه‌ها، بسته‌های الحاقی احتمالی و برنامه‌های افزودنی موجود در هر نسخه پلتفرم فهرست شده‌اند. هر فناوری دارای توضیحات کوتاه و پیوندی به منابعی است که جایگاه آن را در دنیای جاوا توصیف می کند. توجه داشته باشید که بسیاری از مؤلفه ها در هر سه نسخه پلتفرم جاوا گنجانده شده است.

فن آوری های موجود در Java SE:

  • کلاس های Java Foundation (Swing)(JFC) مجموعه ای از کتابخانه های کلاس جاوا است که برای ایجاد رابط های کاربری گرافیکی و سایر توابع گرافیکی در برنامه های کاربردی کلاینت جاوا استفاده می شود. مدیریت .
  • JavaHelpیک سیستم کمک توسعه‌پذیر مستقل از پلتفرم است که به توسعه‌دهندگان و نویسندگان فنی اجازه می‌دهد تا صفحات راهنما را در اپلت‌ها، اجزای نرم‌افزار، برنامه‌ها، سیستم‌های عامل و دستگاه‌ها جاسازی کنند و سیستم‌های کمکی وب ایجاد کنند. رجوع به مقاله شود.
  • با تشکر از رابط بومی جاوا(JNI) برنامه های جاوا که در داخل JVM اجرا می شوند می توانند با برنامه ها و کتابخانه های نوشته شده به زبان های برنامه نویسی دیگر تعامل داشته باشند.
  • فن آوری Java Web Startاستقرار برنامه های کاربردی جاوا را با اجازه دادن به کاربران برای دانلود و اجرای نرم افزارهای غنی، مانند صفحات گسترده، با کلیک یک دکمه ماوس، بدون نصب، ساده می کند (به مقاله مراجعه کنید).
  • قابلیت اتصال به پایگاه داده جاوا(JDBC) یک API است که ابزاری را برای دسترسی به اکثر منابع داده های رابطه ای از برنامه های جاوا فراهم می کند. می تواند به بسیاری از پایگاه های داده SQL و همچنین سایر منابع داده های جدولی مانند صفحات گسترده و فایل های مسطح متصل شود.
  • تصویربرداری پیشرفته جاوا(JAI) یک API شی گرا است که یک مدل برنامه نویسی ساده و سطح بالا برای ساده سازی دستکاری تصویر ارائه می دهد.
  • سرویس احراز هویت و مجوز جاوا(JAAS) فناوری است که خدماتی را با ابزاری برای احراز هویت کاربران و تأیید حقوق دسترسی آنها ارائه می دهد. این شامل یک پیاده سازی جاوا از چارچوب استاندارد PAM (Pluggable Authentication Module) است و از مجوز در سطح کاربر پشتیبانی می کند.
  • پسوند رمز نگاری جاوا(JCE) مجموعه‌ای از بسته‌ها است که زیرساخت و پیاده‌سازی را برای رمزگذاری، تولید و تبادل کلید و الگوریتم‌های کد احراز هویت پیام (MAC) فراهم می‌کند. این فناوری همچنین شامل پشتیبانی از رمزهای متقارن، نامتقارن، بلوک و جریان، و همچنین اشیاء ایمن و مهر و موم شده است. جزئیات بیشتر را می توان در دفترچه راهنما یافت.
  • اشیاء داده جاوا(JDO) یک مدل پایداری انتزاعی استاندارد برای اشیاء جاوا بر اساس رابط ها است. این به توسعه دهندگان اجازه می دهد تا به طور مستقیم نمونه هایی از کلاس های جاوا دامنه را در ذخیره سازی دائمی (مانند پایگاه داده) ذخیره کنند. در برخی موارد، این مدل می‌تواند جایگزین نوشتن مستقیم روی یک فایل، سریال‌سازی، JDBC و همچنین استفاده از اجزای EJB سمت سرور شود که هم توسط کانتینرها مدیریت می‌شوند (Container Managed Persistence - CMP) و هم به طور مستقل ذخیره‌سازی حالت (Bean Managed Persistence - BMP).
  • بسته برنامه های افزودنی مدیریت جاوا(JMX) ابزارهایی را برای ساخت برنامه های کاربردی توزیع شده، ماژولار، پویا و مبتنی بر وب برای مدیریت و نظارت بر دستگاه ها، نرم افزارها و شبکه ها بر اساس ارائه خدمات ارائه می دهد (به مقاله مراجعه کنید).
  • چارچوب رسانه جاوا(JMF) به شما امکان می دهد اطلاعات صوتی، تصویری و سایر رسانه ها را به برنامه ها و اپلت های جاوا اضافه کنید (به کتابچه راهنمای کاربر مراجعه کنید).
  • نامگذاری جاوا و رابط دایرکتوری(JNDI) یک رابط یکپارچه برای دسترسی به خدمات مختلف نام و فهرست در یک شبکه شرکتی است. این برنامه ها را قادر می سازد تا به طور موثر به انواع خدمات نامگذاری و فهرست راهنما در یک محیط سازمانی ناهمگن متصل شوند.
  • برنامه های افزودنی سوکت امن جاوا(JSSE) مجموعه ای از بسته ها برای تبادل امن اطلاعات در اینترنت است. آنها نسخه جاوای پروتکل‌های لایه سوکت‌های امن (SSL) و امنیت لایه حمل و نقل (TLS) را پیاده‌سازی می‌کنند و ابزاری برای رمزگذاری داده‌ها، تأیید صحت پیام و تأیید اعتبار روی سرور و کلاینت ارائه می‌کنند (این دومی اختیاری است).
  • Java Speech API(JSAPI) شامل مشخصات JSGF (فرمت گرامر گفتار جاوا) و JSML (زبان نشانه گذاری گفتار جاوا) است. این پکیج قابلیت استفاده از فناوری های گفتاری در رابط کاربری را فراهم می کند. JSAPI یک API چند پلتفرمی برای پشتیبانی از تشخیص فرمان صوتی، سیستم های ورودی گفتار و ترکیب گفتار است. برای جزئیات بیشتر به بخش بعدی مقاله مراجعه کنید.
  • جاوا 3 بعدییک API است که قابلیت های بین پلتفرمی و مقیاس پذیر را برای کار با گرافیک های سه بعدی در برنامه های جاوا فراهم می کند. API به عنوان مجموعه ای از رابط های شی گرا سازماندهی شده است که در یک مدل برنامه نویسی واحد، ساده و سطح بالا جمع می شوند.
  • سازوکار تسهیلات فرادادهبه توسعه‌دهندگان اجازه می‌دهد تا ویژگی‌هایی را برای کلاس‌ها، رابط‌ها، فیلدها و متدها تعریف کنند تا بتوانند در زمان اجرا توسط ابزارهای توسعه، ابزارهای استقرار و کتابخانه‌های شخص ثالث تحت مدیریت ویژه قرار گیرند (به مقاله مراجعه کنید).
  • Java Content Repository APIیک API برای دسترسی به مخازن محتوا در Java SE بدون در نظر گرفتن اجرای آنها است. چنین مخازنی سیستم های مدیریت اطلاعات سطح بالایی هستند و نسخه های توسعه یافته مخازن داده های کلاسیک هستند.
  • شمارش ها(شمارش) یک نوع داده است که به شما امکان می دهد اقلام مختلف داده را به عنوان مجموعه ای از ثابت های تایپ شده توصیف کنید.
  • ژنریک ها(انواع عمومی) به شما امکان می دهد کلاس هایی را با پارامترهایی (انواع انتزاعی) ایجاد کنید که در مرحله نمونه سازی مشخص شده اند. برای جزئیات به مقاله مراجعه کنید و همچنین مقاله در مورد اینکه چگونه انواع عمومی کار با مجموعه‌ها را در Java SE 6.0 آسان‌تر می‌کنند را بررسی کنید.
  • خدمات رفاهی همزمانیمجموعه‌ای از کلاس‌ها است که عملکردهای سطح متوسط ​​را که معمولاً برای برنامه‌های پردازش موازی مورد نیاز است، ارائه می‌کنند.
  • Java API برای پردازش XML(JAXP) یک API است که برنامه های کاربردی جاوا می توانند از آن برای تجزیه و تبدیل اسناد XML صرف نظر از پردازنده XML استفاده شده استفاده کنند. این اجازه می دهد تا برنامه ها به راحتی بین پردازنده های مختلف بدون تغییر کد برنامه جابجا شوند. به نوبه خود، فناوری JAXB ( Java API برای XML Binding) قابلیت هایی را برای خودکارسازی نگاشت اسناد XML و اشیاء جاوا فراهم می کند.
  • SOAP with Attachments API برای جاوا(SAAJ) به توسعه دهندگان توابعی برای تولید و پردازش پیام ها مطابق با مشخصات SOAP 1.1 ارائه می دهد و SOAP را با پیوست ها مشخص می کند. برای جزئیات بیشتر به مقاله مراجعه کنید).

فناوری های J2EE:

  • JavaBeans سازمانی(EJB) یک مدل جزء است که توسعه میان افزار را با ارائه خدماتی مانند مدیریت تراکنش، امنیت و اتصال به پایگاه داده ساده می کند.
  • مشخصات پورتلتمجموعه ای از APIها را برای ساخت پورتال در جاوا تعریف می کند که جنبه هایی مانند تجمیع و ارائه اطلاعات، شخصی سازی و امنیت را پوشش می دهد (به مقاله مراجعه کنید).
  • جاوا میلیک API است که مجموعه ای از کلاس های انتزاعی را ارائه می دهد که سیستم پست را مدل می کند.
  • سرویس پیام جاوا(JMS) یک API است که از ایجاد برنامه های پیام رسانی جاوا قابل حمل پشتیبانی می کند. مجموعه ای مشترک از مفاهیم اساسی و استراتژی های برنامه نویسی را برای همه سیستم های پیام رسانی سازگار با JMS تعریف می کند.
  • چهره های جاوا سرور(JSF) یک مدل برنامه نویسی ارائه می دهد که به شما کمک می کند تا برنامه های کاربردی وب را با مونتاژ صفحات از اجزای رابط کاربری قابل استفاده مجدد، اتصال آن مؤلفه ها به منابع داده و رویدادهای ایجاد شده توسط مشتری به کنترل کننده های سرور بسازید. برای اطلاعات بیشتر، سری مقالات آموزشی دو قسمتی و مجموعه ستونی را ببینید.
  • صفحات جاوا سرور(JSP) ابزاری را در اختیار توسعه دهندگان وب قرار می دهد تا به سرعت صفحات وب پویا و چند پلتفرمی را ایجاد کرده و به راحتی حفظ کنند که رابط کاربری و تولید محتوا را از هم جدا می کند تا طراحان بتوانند بدون دست زدن به محتوای تولید شده به صورت پویا علامت گذاری را تغییر دهند (به آموزش مراجعه کنید.
  • کتابخانه برچسب استاندارد برای صفحات جاوا سرور(JSTL) مجموعه ای از تگ های تخصصی است که فرمت استانداردی را برای انجام اقدامات مورد نیاز بسیاری از برنامه های کاربردی وب ارائه می کند. Refresh Your JSP Pages with JSTL و سری چهار قسمتی با عنوان را بررسی کنید.
  • Java Servletsعملکرد سرورهای وب را با ارائه یک رویکرد متقابل پلتفرم و مبتنی بر مؤلفه برای ساختن برنامه های کاربردی وب که از محدودیت های عملکرد CGI عاری است، گسترش دهید.
  • معماری اتصال J2EE(JCA) یک معماری استاندارد برای اتصال برنامه های کاربردی J2EE به سیستم های اطلاعات سازمانی ناهمگن (EIS) ارائه می دهد. این معماری مجموعه‌ای از مکانیسم‌های مبتنی بر تراکنش مقیاس‌پذیر و امن را تعریف می‌کند که از طریق آن فروشندگان EIS می‌توانند آداپتورهای منبع استاندارد را برای گنجاندن در یک سرور برنامه فراهم کنند. برای اطلاعات بیشتر، به مقالات و راهنما مراجعه کنید.
  • مشخصات مدیریت J2EE(JMX) یک مدل اطلاعات مدیریتی را برای پلت فرم J2EE تعریف می کند. این مدل به طور ویژه برای تعامل با بسیاری از سیستم ها و پروتکل های کنترل طراحی شده است. این شامل ابزارهای استاندارد برای نگاشت به مدل اطلاعات مشترک (CIM)، پایگاه اطلاعات مدیریت SNMP (MIB) و مدل شی جاوا با استفاده از مولفه مدیریت J2EE EJB (MEJB) سرور مقیم EJB است.
  • Java Transaction API(JTA) یک API مستقل از پیاده سازی و پروتکل در سطح بالا است که برنامه ها و سرورهای برنامه را با ابزارهای دسترسی به تراکنش ها فراهم می کند. سرویس تراکنش جاوا(JTS) پیاده‌سازی یک مدیر تراکنش را تعریف می‌کند که از JTA پشتیبانی می‌کند و در یک سطح زیربنایی، نقشه‌برداری به سرویس تراکنش شی (OTS 1.1) OMG را پیاده‌سازی می‌کند. انتشار تراکنش در JTS با استفاده از پروتکل Inter-ORB (IIOP) اجرا می شود. برای جزئیات بیشتر به مقاله مراجعه کنید.

فناوری هایی که بخشی از J2ME هستند:

  • مشخصات دستگاه اطلاعات موبایل(MIDP) یکی از دو پیکربندی است که محیط اجرای جاوا را برای دستگاه های تلفن همراه با محدودیت منابع تشکیل می دهد. MIDP عملکردهای اساسی را برای برنامه ها فراهم می کند، از جمله ابزارهایی برای ایجاد رابط های کاربر، اتصال به منابع شبکه، ذخیره سازی داده های محلی و مدیریت چرخه حیات.
  • پیکربندی دستگاه متصل(CDC) یک زیرساخت استاندارد شده برای ساخت و استقرار برنامه‌های کاربردی است که از بسیاری از دستگاه‌های شبکه و تعبیه‌شده قابل دسترسی است.
  • Mobile 3D Graphics API برای J2ME(M3G) یک API سه بعدی تعاملی سبک وزن است که یک افزونه برای J2ME است. در این مجموعه دو قسمتی می توانید اطلاعات بیشتری درباره او بخوانید.

فناوری های جاوا و توسعه برنامه های کاربردی وب

جاوا برای سال ها زبان اصلی برای توسعه برنامه های کاربردی وب بوده است. در سال‌های اخیر، چارچوب‌ها و کتابخانه‌های زیادی برای تسهیل ایجاد برنامه‌های کاربردی وب جاوا پدید آمده‌اند، از جمله برنامه‌های کاربردی تعاملی غنی وب ۲.۰.

منابع زیر را برای توسعه وب جاوا بررسی کنید.

  • این ستون Grails را معرفی می‌کند، یک چارچوب مدرن برای ساخت برنامه‌های کاربردی وب نوشته شده در Groovy. Grails به شما این امکان را می دهد که کدهای جاوای نوشته شده قبلی را با توانایی استفاده از یک زبان برنامه نویسی انعطاف پذیر و پویا ترکیب کنید. برای اطلاعات بیشتر در مورد Groovy، رابطه جاوا با زبان های پویا و برنامه نویسی تابعی را در زیر ببینید؟
  • Ajax یک روش برنامه نویسی است که از زبان های برنامه نویسی سمت سرویس گیرنده برای برقراری ارتباط با یک وب سرور استفاده می کند تا صفحات را بدون نیاز به بارگذاری مجدد کامل، به سرعت به روز کنند. در این سری از مقالات و، خواهید آموخت که چگونه Ajax می تواند به شما به عنوان یک توسعه دهنده جاوا کمک کند. برای اطلاعات بیشتر به developerWorks مراجعه کنید.
  • JavaServer Faces (JSF) یک مدل برنامه نویسی ارائه می دهد که به شما کمک می کند تا برنامه های کاربردی وب را با مونتاژ صفحات از اجزای رابط کاربری قابل استفاده مجدد، مرتبط کردن آن اجزا با منابع داده و رویدادهای تولید شده توسط مشتری با کنترل کننده های سرور بسازید. برای اطلاعات بیشتر، سری مقالات آموزشی دو قسمتی و مجموعه ستونی را ببینید.
  • Eclipse Web Tools Platform (WTP) محیط توسعه محبوب Eclipse را با افزودن ابزارهایی برای ساخت برنامه های کاربردی وب بر اساس فناوری های Java EE گسترش می دهد (به آموزش مراجعه کنید).
  • برای بسیاری از مطالب عالی دیگر در مورد این موضوعات، developerWorks را بررسی کنید.

فن آوری های جاوا، SOA و خدمات وب

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

ایجاد شده بر اساس این اصل، خدمات وب به شما امکان می دهد قوانین و فرآیندهای کسب و کار را در XML توصیف کنید، به طوری که تعامل برنامه ها بدون توجه به پلت فرم ها و زبان های برنامه نویسی مورد استفاده انجام شود. فناوری‌های XML قابلیت حمل داده‌ها را ارتقا می‌دهند و ایجاد پیام را ساده می‌کنند، در حالی که فناوری‌های جاوا شما را قادر می‌سازد تا کد قابل حمل بنویسید. XML و جاوا به خوبی با هم کار می کنند و آنها را به ترکیبی عالی از فناوری ها برای ساخت و استقرار خدمات وب تبدیل می کند.

برای اطلاعات بیشتر، مطالب زیر را مطالعه کنید:

  • صفحات و صفحات DeveloperWorks می توانند به شما کمک کنند تا در این فناوری های چالش برانگیز حرکت کنید.
  • در این مجموعه، با زیرساخت‌های خدمات وب جاوا و لایه‌های کاربردی جدید ساخته شده بر روی این سرویس‌ها آشنا می‌شوید.
  • این مقاله یک سبک زیبا از طراحی سرویس‌های وب به نام Representational State Transfer (REST) ​​را معرفی می‌کند و نحوه استفاده از جاوا را برای ساخت سرویس‌های وب RESTful توضیح می‌دهد.
  • درک فناوری JAX-RPC (RPC مبتنی بر Java API برای کار با XML) برای ایجاد خدمات وب جاوا کارآمد ضروری است.
  • JAX-WS گام بعدی آشکار در تکامل JAX-RPC است. یک مقدمه عملی برای این API جدید در آموزش ارائه شده است.
  • این سری راهنمای معماری اجزای خدمات (SCA) است، مشخصاتی که یک مدل SOA را برای توسعه برنامه‌ها و سیستم‌ها توصیف می‌کند.
  • این مقاله مقدمه ای بر چارچوب Service Data Objects ارائه می کند که مدل داده جاوا EE را برای ساخت برنامه های SOA ساده می کند.

جاوا چه ربطی به زبان های پویا و برنامه نویسی کاربردی دارد؟

بسیاری از توسعه دهندگانی که در حال شروع با جاوا هستند، تجربه گسترده ای با سایر زبان های برنامه نویسی دارند. در عین حال، حتی برنامه نویسان محترم نیز اذعان می کنند که جاوا زبان ایده آلی برای حل نیست از همهمشکلاتی که در عمل با آن مواجه می شوند. خوشبختانه، با پشتیبانی JVM، می‌توانید هنگام توسعه برنامه‌های کاربردی برای پلتفرم جاوا، از اسکریپت‌نویسی پویا و زبان‌های کاربردی امروزی نهایت استفاده را ببرید. انعطاف پذیری و پویایی این زبان ها هنگام نمونه سازی و اجرای انواع خاصی از برنامه ها بسیار مفید است.

در مطالبی که لینک‌های آن در زیر آمده است، می‌توانید درباره امکانات استفاده از زبان‌های پویا و کاربردی در پلتفرم جاوا بیشتر بخوانید.

  • زبان برنامه نویسی Groovy به توسعه دهندگان جاوا این امکان را می دهد تا از آشناترین ساختارها و کتابخانه های زبان خود استفاده کنند و در عین حال یک محیط توسعه منعطف و پویا را ارائه دهند که نیازی به کامپایل ندارد، نحو را ساده می کند و از برنامه نویسی در برنامه های رایج جاوا پشتیبانی می کند. مروری دقیق بر قابلیت های این زبان در مقالات این مجموعه ارائه شده است.
  • API برنامه نویسی جدید در Java SE 6، که با جاوا SE 5 سازگار است و شامل مجموعه کوچکی از رابط ها و کلاس ها است، راه آسانی را برای فراخوانی اسکریپت های نوشته شده به ده ها زبان از کد جاوا فراهم می کند. با استفاده از آن، می توانید اسکریپت های خارجی را در زمان اجرا بارگیری و فراخوانی کنید و به صورت پویا رفتار برنامه خود را تغییر دهید. می توانید اطلاعات بیشتری در مورد این API در مجموعه دو قسمتی با عنوان مطالعه کنید.
  • آیا شما طرفدار سرسخت برنامه نویسی کاربردی هستید؟ سپس باید به ستونی توجه کنید که در مورد Scala صحبت می کند، یک زبان برنامه نویسی برای JVM که یک رویکرد کاربردی و شی گرا را برای توسعه ترکیب می کند.
  • VM ها برای مدت طولانی از زبان های برنامه نویسی جایگزین پشتیبانی می کنند. در مقاله های ستونی، می توانید در مورد پیاده سازی JVM زبان هایی مانند Rexx، Ruby، JavaScript، Python و برخی دیگر بخوانید.

جاوا و توسعه نرم افزار آزاد

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

  • بنیاد نرم‌افزار آپاچی (EN) بسیاری از پروژه‌های منبع باز را گرد هم می‌آورد که بیشتر آنها با فناوری جاوا توسعه یافته‌اند. برخی از اعضای این خانواده از پروژه ها در زیر لیست شده اند.
    • Apache Struts چارچوبی برای ساخت برنامه های کاربردی وب است که از معماری Model-View-Controller پیروی می کنند.
    • آپاچی شیل یکی دیگر از چارچوب های مدرن برای ساخت برنامه های کاربردی وب است که از Struts به ارث می رسد و بر اساس فناوری JSP (صفحات جاوا سرور) است. برای آشنایی با شیل، به مقالات این مجموعه مراجعه کنید.
    • Apache Ant استاندارد واقعی برای خودکارسازی فرآیند ساخت برنامه های جاوا است.
    • ابزار ساخت Apache Maven با در نظر گرفتن الزامات پروژه‌های نرم‌افزاری مدرن، با تعاملات پویا بین تیم‌های توسعه و تکیه بر بسیاری از مؤلفه‌های مستقل طراحی شده است (راهنما را ببینید).
    • آپاچی تامکت یک کانتینر وب محبوب است که از سرولت ها و صفحات سرور جاوا (JSP) پشتیبانی می کند.
    • پروژه Apache Geronimo در مورد ایجاد یک سرور کاربردی Java EE کاملاً سازگار با مشخصات مبتنی بر فناوری کاملاً رایگان است. می‌توانید در این مقاله و در سایت developerWorks اطلاعات بیشتری درباره Geronimo بخوانید تا محتوای مفید فراوانی داشته باشید.
    • Apache Derby یک سرور پایگاه داده رابطه ای است که به طور کامل در جاوا پیاده سازی شده است. معرفی دربی در مقاله ارائه شده است.
  • Eclipse (EN) یک پلت فرم توسعه باز و مستقل و مجموعه ای از ابزارهای اساسی برای ساختن نرم افزار است. این به زبان جاوا نوشته شده است و یک زیرساخت پلاگین برای تسهیل توسعه، ادغام و استفاده از ابزارهای نرم افزاری را فراهم می کند. IBM یکی از اعضای موسس Eclipse.org است و فعالانه در هیئت مدیره و کمیته های فرعی پروژه شرکت می کند. می توانید در مورد برخی از فناوری های مؤلفه پلت فرم Eclipse با هدف ایجاد برنامه های کاربردی جاوا در مطالب زیر بخوانید:
    • AspectJ یک برنامه افزودنی جنبه گرا برای زبان جاوا است که می تواند برای اجرای ماژولار عملکردهای متقاطع مانند ورود به سیستم یا مدیریت استثنا استفاده شود.
    • جعبه ابزار استاندارد استاندارد (EN) (SWT) ابزاری است که به شما امکان می دهد از قدرت سیستم عامل برای ایجاد عناصر رابط کاربری به شیوه ای کارآمد و قابل حمل استفاده کنید.
    • Mylyn یک سیستم مدیریت کار قدرتمند برای کاربران Eclipse است. برای راهنمایی دقیق، به مقالات مراجعه کنید و قبلاً به عنوان "Acegi Security for Spring" شناخته می شد، یک راه حل امنیتی قدرتمند و انعطاف پذیر برای برنامه های سازمانی است که بر روی چارچوب Spring ساخته شده است. در چهار مقاله در این مجموعه به طور مفصل به آن پرداخته شده است.
  • Sun Microsystems همچنین پروژه های اجتماعی زیر را در java.net راه اندازی کرده است:
    • Openjdk

چگونه مهارت های برنامه نویسی جاوا را توسعه دهیم؟

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

  • راهنماها و مقالات
    • DeveloperWorks مجموعه گسترده ای دارد که از نظر سودمندی در یادگیری جاوا پس از کدنویسی در رتبه دوم قرار دارد.
    • مقالات سری هستند و برای بهبود مهارت های زبان جاوا شما عالی هستند.
    • استفاده از تئوری طراحی برای ایجاد برنامه های کاربردی در دنیای واقعی در مقالات این مجموعه مورد بحث قرار گرفته است.
    • توسعه دهندگان باتجربه جاوا ابزارهایی را در برنامه های خود از قبل برای اشکال زدایی و آزمایش آنها می سازند. DeveloperWorks چندین مقاله در این مجموعه دارد - بازی های بلادرنگ مبتنی بر Eclipse برای یادگیری برنامه نویسی جاوا. برای آشنایی با CodeRuler، به تسخیر پادشاهی های قرون وسطی با CodeRuler مراجعه کنید.
  • دوره های آموزشی فنی IBM
    • از طیف گسترده ای از دوره های جاوا به صورت آنلاین، حضوری و چند رسانه ای از خدمات جهانی IBM لذت ببرید.
  • گواهینامه
    • شما می توانید در چندین آزمون شرکت کنید تا گواهینامه هایی کسب کنید که مهارت های برنامه نویسی جاوا شما را نشان می دهد. برای دوره های صدور گواهینامه، به وب سایت گواهی جاوا مراجعه کنید.
    • IBM مهارت‌های شما را در فناوری‌های مرتبط با جاوا مانند ساخت برنامه‌های کاربردی سازمانی برای WebSphere، نرم‌افزار Rational، DB2، XML و SOA تقویت می‌کند.
  • انجمن ها
    • این تعاملی ترین راه برای یادگیری زبان جاوا است که توسط کارشناسانی با سال ها تجربه در فناوری جاوا تعدیل می شود.

محصولات و فناوری های IBM برای توسعه دهندگان جاوا

IBM یکی از پیشروها در کاربرد عملی فناوری های جاوا است. در زیر پیوندهایی به برخی از محصولات و فناوری های IBM در دسترس توسعه دهندگان برای پلتفرم جاوا است.

  • محصولات قابل دانلود رایگان:
    • (Java Developer Kit) مجموعه ای از ابزارها برای ساخت و آزمایش اپلت ها و برنامه های کاربردی برای Java SE و Java ME بر روی انواع سیستم عامل های محبوب از جمله ویندوز، لینوکس و AIX است.
    • (بسته توسعه IBM برای Eclipse) یک جعبه ابزار توسعه‌دهنده پشتیبانی‌نشده مبتنی بر Eclipse است که به شما امکان می‌دهد برنامه‌ها را در محیط توسعه خارج از قفسه خود بسازید و اجرا کنید.
    • : می توانید بسته های نرم افزاری رایگان Eclipse از جمله محصولات موازی Calisto و Europa را از developerWorks دانلود کنید.
    • یک مخزن مجازی از فناوری های نویدبخش جاوا است که در IBM توسعه می یابد. اینها شامل APIها، IDEها، کیت‌های توسعه، پیاده‌سازی مرجع و ابزارهای کمکی است. در زیر پیوندهایی به برخی از فناوری های ارائه شده در alphaWorks وجود دارد.
    • ... این ابزار به شما کمک می‌کند تا اسکریپت‌های Ant قابل آزمایش را برای ساختن پروژه‌های توسعه‌یافته با Eclipse، Rational و WebSphere IDE برای پلتفرم‌های Java EE و SCA، تجزیه و تولید کنید.
    • (ابزار مدلسازی و تحلیل الگوی IBM برای جمع آوری زباله جاوا). این ابزار، فایل‌های ردیابی GC را تجزیه می‌کند، استفاده از حافظه heap (heap) را تجزیه و تحلیل می‌کند و تنظیم برنامه را بر اساس نتایج شبیه‌سازی حافظه توصیه می‌کند. (Secure Shell Library for Java) یک پیاده سازی سبک از پروتکل SSH-2 است که توسط گروه ضربت مهندسی اینترنت (IETF) توسعه یافته است. ابزارهای احراز هویت ایمن و سایر خدمات ایمن را ارائه می دهد که روی یک شبکه ناامن کار می کنند. به شما این امکان را می دهد که داده ها را ادغام و تغییر دهید، در نتیجه بهره وری، انعطاف پذیری و بهره وری کسب و کار خود را با دسترسی سریع به اطلاعات مورد نیاز افزایش دهید.

امنیت اطلاعات چیست؟ این یک وضعیت امنیت اطلاعات است که محرمانه بودن، در دسترس بودن و یکپارچگی آن را تضمین می کند.

معمولاً برای ارزیابی وضعیت امنیت اطلاعات، درک و تجزیه و تحلیل تهدیدها و منابع آنها، ارزیابی سطح آسیب، احتمال اجرا و مرتبط بودن تهدیدها، خطرات (اختیاری) که ممکن است بر سیستم ما تأثیر بگذارد ضروری است. اطلاعات

به نظر من، ارزیابی امنیت یک فناوری یا زبان برنامه نویسی خاص بدون گره زدن به یک روش پیاده سازی خاص غیرممکن است، یعنی بدون یک محصول نرم افزاری تمام شده خاص در زبانی که دارای مشخصات فنی دقیق با شرحی از معماری و عملکرد اما این نیز کافی نخواهد بود، زیرا لازم است وضعیت امنیتی سیستم اطلاعات نهایی را با معماری خاص، مجموعه اجزاء، فرآیندهای تجاری، اطلاعات و در نهایت افراد ارزیابی کرد. بگذارید یک مثال از ساخت خانه برایتان بزنم. مواد (ماسه، سیمان، سنگ خرد، آجر و ...) و ابزار (سطل، بیل، ماله و ...) داریم. ما قادر نخواهیم بود که کیفیت و قابلیت اطمینان خانه تمام شده را فقط با مواد / ابزار مورد استفاده ارزیابی کنیم: مدت زمان ماندگاری آن، ترک خوردگی، سرد یا بی صدا بودن آن. شما باید یک پروژه خانه، فناوری ساخت و ساز و تیمی از صنعتگران را انتخاب کنید. و تنها پس از اتمام ساخت و ساز، ما قادر خواهیم بود انطباق با پروژه، GOST، SNiP ها را اندازه گیری کنیم، اندازه گیری های حفاظت حرارتی، سر و صدا، بارها را بررسی کنیم، کیفیت سیمان را تجزیه و تحلیل کنیم و به اکثر سوالات پاسخ دهیم. اما سوال اصلی "چقدر می ماند؟" ما پاسخ دقیقی نخواهیم داشت، زیرا ما از همه شرایط عملکرد خانه و همه عواملی که در تمام مدت تأثیر می گذارد نمی دانیم.

چگونه جاوا را ایمن نگه داریم

به عنوان مثال جاوا را در نظر بگیرید . این یک زبان برنامه نویسی شی گرا است. برنامه های جاوا به بایت کد جاوا ترجمه می شوند که توسط ماشین مجازی جاوا (JVM) اجرا می شود، برنامه ای که کد بایت را پردازش می کند و دستورالعمل ها را به عنوان مفسر به سخت افزار ارسال می کند. مزیت این روش اجرای برنامه ها استقلال کامل بایت کد از سیستم عامل و سخت افزار است که به شما امکان می دهد برنامه های جاوا را بر روی هر دستگاهی که ماشین مجازی مربوطه برای آن وجود دارد اجرا کنید.

« یک زبان جهانی «به نظر خوب می‌رسد، اما رایج‌ترین مشکل روی آن است - نشت حافظه در JVM، که منجر به سرریز شدن حافظه و از کار افتادن آن می‌شود. در ارتباط با این مشکل، آسیب پذیری ها مستثنی نمی شوند، زیرا فرض اساسی پایایی این است که هر چه ساده تر، بهتر. در این مورد، چنین پای پیچیده ای از اطمینان از سازگاری تعداد زیادی از سیستم عامل ها و سیستم عامل ها مونتاژ می شود که ردیابی و بستن تمام آسیب پذیری های موجود در آنها و از بین بردن سریع آنها تقریباً غیرممکن است. برای همین مایکروسافت بعد از 4-8 سال می توان آسیب پذیری ها را پیدا کرد و برطرف کرد و این در صورتی است که ویژگی های اعلام نشده رها شده عمدی یا اشتباهی را در نظر نگیرید.

از رویه من: زمانی که برنامه نویسان عملکرد جدیدی را اضافه می کنند که با یک عملکرد قبلاً اجرا شده مرتبط است، یا عملکرد قدیمی را تعمیر می کنند، در 15٪ موارد، محصولی را که قبلاً کار کرده بود، خراب می کنند. و اگر در همان زمان آزمایش کامل انجام ندهند - در خروجی محصولی با عملکرد جدید داریم اما قدیمی که تا حدی کار نمی کند. همچنین تفاوت هایی در کدنویسی برای پلتفرم های مختلف، نسخه های سیستم عامل، نرم افزارها وجود دارد. در این راستا، می توان تصور کرد که حفظ زبان برنامه نویسی جاوا و JVM چقدر دشوار است، بدون ذکر مسائل امنیتی.

در حال حاضر، Java Development Kit 10 منتشر شده است که مکانیسم های امنیتی استاندارد منتشر شده برای Java SE 8 را به ما ارائه می دهد و در مستندات امنیتی توضیح داده شده است. در نسخه دهم چیز جدیدی اضافه نشده است.

توجه داشته باشید که اوراکل دارای یک مرکز منابع امنیتی جاوا است. به طور کلی، این شرکت امنیت جاوا را به چهار بخش اصلی تقسیم می کند:

الف) توسعه دهندگان باید:

تمام آخرین محیط توسعه و به روز رسانی های امنیتی را دنبال کرده و از آنها استفاده کنید.

از برنامه هایی برای بررسی صحت کد استفاده کنید (مثلاً Checker Framework).

ب) مدیران سیستم باید:

تمام آخرین به روز رسانی های جاوا و اجزای لازم برای عملکرد محصول (از جمله سیستم عامل، کتابخانه ها، چارچوب ها و غیره) را دنبال کرده و از آنها استفاده کنید.

استفاده از قوانین استقرار جاوا که توسط و;

از یک مهر زمانی قابل اعتماد استفاده کنید.

ج) کاربران نهایی باید:

همیشه از آخرین نسخه اصلی جاوا استفاده کنید.

د) متخصصان امنیتی نیاز دارند:

استفاده از ابزارهای مدیریتی پیشرفته و بهبود امنیت (به عنوان مثال، کنسول مدیریت پیشرفته)؛

نظارت بر نصب به موقع تمام به روز رسانی های امنیتی؛

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

توسعه نرم افزار و مسائل امنیتی

به طور کلی، دلایل اصلی مشکلات امنیتی در برنامه ها در طول توسعه نرم افزار به شرح زیر است:

الف) عدم درک اصطلاحات امنیتی به طور کلی، بدون ذکر دانش خاص و راه حل های کاربردی.

به عنوان یک قاعده، توسعه دهندگان امنیت را در بهترین حالت با موارد زیر مرتبط می کنند: کنترل دسترسی و ورود به سیستم و محافظت از رمز عبور، کمتر - حفاظت از اتصال در سطح https (با استفاده از مکانیسم های رمزگذاری که به طور پیش فرض در دسترس هستند). یعنی به طور رسمی از روش های امنیتی استفاده می کنند که در واقع بدون در نظر گرفتن الزامات و تفاوت های ظریف "برای نمایش" رسمی باقی می مانند:

برای رمزهای عبور: معمولاً از مقادیر پیش‌فرض استفاده می‌شود و برای طول، قدرت، فرکانس تغییر، تکرارناپذیری، تعداد تلاش‌ها پیکربندی نمی‌شوند. اغلب، این پارامترها را نمی توان بهینه کرد، زیرا آنها در کار محدوده برای توسعه نرم افزار گنجانده نشده اند، که منجر به نیاز به اضافه کردن کد می شود.

برای مدیریت و ثبت دسترسی: در بهترین حالت، توسعه دهندگان گروه ها یا نقش های کاربران و اشیاء دسترسی را که باید در نرم افزار موجود باشد، شرح داده اند. در بدترین حالت، خود توسعه دهندگان بخش ها و اشیاء را به موارد مورد نیاز کاربران و مدیران "تقسیم" کردند. در حالت اول، سیستمی را دریافت می کنیم که می تواند به طور انعطاف پذیر پیکربندی شود، اما زمان قابل توجهی برای پیکربندی و مذاکره درباره حقوق نیاز دارد. در دوم - یک سیستم رسمی کنترل دسترسی. علاوه بر این، توسعه دهندگان باید بدانند که چه نوع اطلاعاتی و در چه حجمی باید ثبت شوند. با این حال، اغلب این اطلاعات به آنها ارائه نمی شود، که منجر به جزئیات ناکافی در گزارش ها برای تجزیه و تحلیل حوادث یا درک آنچه در نرم افزار اتفاق می افتد، می شود. یا به ذخیره بیش از حد لاگ ها و حجم زیاد اطلاعات، که محدودیت های قابل توجهی را برای توانایی ذخیره اطلاعات برای مدت زمان مورد نیاز (مثلاً یک تا سه سال) ایجاد می کند یا نیاز به خرید انبارهای اطلاعات اضافی وجود دارد. با ثبت بیش از حد اطلاعات، مشکلات اضافی با سرعت تجزیه و تحلیل و تجزیه و تحلیل حوادث و سرعت در یافتن اطلاعات لازم به وجود می آید. افزونگی ممکن است به بودجه اضافی برای افزایش کارکنان، خرید سیستم‌های SIEM با قوانین منحصربه‌فرد برای پردازش اطلاعات نیاز داشته باشد، یا ممکن است منجر به خطرات مرتبط با اطلاعات قدیمی شود. در عین حال، زمان زیادی برای تجزیه و تحلیل و پردازش اطلاعات صرف می شود.

حفاظت از کانال‌های ارتباطی به ویژه برای سیستم‌های پرداخت و بانکی که علاوه بر افشای اطلاعات شخصی و شخصی، امکان زیان‌های مالی نیز وجود دارد، کم اهمیت نیست. اغلب اتفاق می افتد که آنها به محافظت از کانال ها و رسانه های انتقال اطلاعات فکر نمی کنند و اگر فکر می کنند از تنظیمات "پیش فرض" استفاده می کنند، به عنوان مثال، TLS / SSL. اما ویژگی های خاص خود را در انتخاب نسخه پروتکل (TLS 1.1، 1.2، 1.3 یا SSL v1-3)، الگوریتم رمزگذاری (RC4، IDEA، Triple DES، SEED، Camellia یا AES)، طول کلید دارد. گاهی اوقات، برای مثال، پروتکل TLS 1.2 صحیح با رمزگذاری AES، طول کلید 256 بیت انتخاب می شود، اما امکان انتخاب آدرس در پورت 443 برای HTTPS و یا پورت 80 برای HTTP را به جای مسدود کردن پورت فراموش می کنید. 80، در نتیجه دسترسی از طریق یک کانال ناامن امکان پذیر می شود. یا مثلاً زیرساخت ماشین های مجازی را بالا می برند و اصلاً به این فکر نمی کنند که دسترسی به شبکه بین ماشین های مجازی بسته شود.

ب) مشکل دوم مربوط به کسب و کار است، زیرا پول را در عملکرد خاصی سرمایه گذاری می کند که بلوک های امنیتی را در نظر نمی گیرد.

متأسفانه، یک کسب‌وکار همیشه نمی‌داند که چرا باید منابع را برای بلوک‌های امنیتی خرج کند، اگر هیچ سود عملکردی از آنها وجود نداشته باشد، محصول پول بیشتری به همراه نخواهد داشت، اما فقط خطرات احتمالی وجود دارد که ممکن است کارساز نباشد. کسب و کار اغلب نیاز به سرمایه گذاری در امنیت را زمانی که یک حادثه امنیت اطلاعات قبلاً رخ داده است درک می کند.

متأسفانه نه تنها کسب و کار در این امر مقصر است، بلکه محیط آن نیز مقصر است که:

همچنین امنیت را درک نمی کند.

صرفه جویی در بودجه برای متخصصان امنیت اطلاعات (آنها اصلاً استخدام نمی شوند یا متخصصان بسیار تخصصی استخدام می شوند یا یک نفر برای مسئولیت همه چیز استخدام می شود).

من نتوانستم به طور منطقی نیاز به امنیت را بیان کنم و خطرات فعلی (شهرت، مالی، موقت) را به درستی توجیه کنم.

ج) مشکل ارتباط در شرکت یا عدم وجود آن.

این زمانی است که کسب و کار و محیط آن نیاز و اهمیت امنیت اطلاعات را درک کنند. آنها بودجه اختصاص دادند، متخصصان مناسب را استخدام کردند، اما مشکلاتی در ارتباط بین واحدهای تجاری و امنیت اطلاعات / خدمات فناوری اطلاعات، توسعه دهندگان وجود دارد.

د) عدم آگاهی کاربران عادی شرکت در مسائل امنیت اطلاعات.

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

ه) کمبود معماران امنیت اطلاعات - متخصصان امنیت اطلاعات همیشه درگیر توسعه نرم افزار نیستند و خود برنامه نویسان به امنیت معماری و استفاده از الگوهای امنیتی مکتوب و آماده (Security Pattern) می اندیشند.

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

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

مقالات مرتبط برتر