۹ عقیده غلط در مورد زبان برنامه نویسی جاوا

جاوا ۲۵ سال است که وجود دارد و این زمان زیادی است که عقاید غلط زیادی پیرامون آن شکل بگیرد. در اینجا ۹ عقیده غالب که با شکست مواجه شد را بررسی میکنیم:
1- جاوا آهسته است
این یکی از تصورات ابتدایی و طولانیمدت در مورد جاواست و پایه و اساس شکل گیری آن اندکی حقیقت دارد. برای اینکه بتوانیم به “write once, run everywhere” که شعار جاواست دست پیدا کنیم این زبان وابسته به JVM شده است این JVM ها یک لایه دیگر از زیرساخت نرمافزار را شکل میدهد که در هر برنامهای باید درگیر باشد. به عنوان یک قانون، لایههای بیشتر زیرساخت سرعت را کاهش میدهد.
علاوه بر این تعدادی از JVMهای اولیه انقدر کند بودند که این تصور را در مورد جاوا ایجاد کردند.
اما امروزه JVMها خیلی سریع هستند و سخت افزار انقدر سریع شده است که یک زیر ساخت اضافه تر برای بسیاری از برنامهها اهمیتی ندارد. پس اگر برنامهای مینویسید که هر سیکل کلاک را شمارش میکنید، احتمالا لازم است از زبان دیگری استفاده کنید. اما برای اغلب برنامههای enterprise کارایی ذاتی جاوا علت مسائل مربوط به سرعت برنامهها نیست.
2- جاوا نمیتواند نشتی حافظه داشته باشد
اگر از دنیای C و Cpp آمده باشید، عادت دارید که به نشتیهای حافظه به شیوه خاصی فکر کنید. در این زبانها نشتی حافظه زمانی رخ میدهد که موقعیت حافظه به درستی اختصاص داده نشده باشد و برنامه نتواند به داده ذخیره شده دسترسی داشته باشد. این نوع از نشتی حافظه در جاوا رخ نمیدهد چرا که اشیاء همواره قابل دسترس هستند. اما این بدان معنی نیست که در جاوا نشتی حافظه وجود ندارد.
در جاوا نشتی حافظه وقتی رخ میدهد که برنامهنویسی نامرتب و شلخته اشیا و متغیرهایی که دیگر مورد استفاده قرار نمیگیرند را پاک نمیکند. در این صورت برنامه با هر اجرا حافظه بیشتر و بیشتری گرفته تا اینکه یا با کمبود حافظه روبرو شود. برنامهنویس یک درس روشن از این مبحث میگیرد: فقط به این خاطر که یک فرم از نشتی حافظه مطرح نیست، به این معنی نیست که میتوانید شلخته و کثیف باشید. شما لازم است کماکان به تمیزکاری اشیا و متغیرهایی که دیگر مورد استفاده قرار نمیگیرند توجه کنید.
3- جاوا تنها زبانی است که تا ابد به آن نیاز خواهید داشت
این یکی از عقایدی است که ریشه در این تفکر دارد که انسانها را مجبور میکند اقیانوس آرام را با یک قایق ۱۲ فوتی (۳.۶ متر) بپیمایند چون تنها چیزی که دارند همین قایق است.
این کار با مهارتها و کتابخانههای کافی ممکن است که همه چیز را به زبان جاوا برنامهنویسی کنید. اگر میخواهید برنامههایی بنویسد که به طرز باور نکردنی به سرعت حساس هستند یا سختافزار را دستکاری کنید، احتمالا با استفاده از زبانهای برنامهنویسی دیگری خوشحال تر و مفیدتر خواهید بود.
هرچند جاوا در آن حدی که بعضی از منتقدان ادعا میکنند، بی اطلاع از سختافزار زیرین نیست، اما قابلیتهای زیادی برای برنامهنویسی مستقیم روی سختافزار ندارد. دستورات جاوا مبتنی برCpp است پس این زبان را یادبگیرید و از استفاده از آن در پروژههایی که لازم است نترسید.
4- جاوا شما را از سختافزار جدا میکند
در بخش قبل گفته شد که شاید لازم باشد زبان دیگری بیاموزید چون جاوا ارتباط نامحسوسی با سختافزار دارد اما این موضوع فقط بحث بر سر درجه و شدت است. به علاوه این موضوع نیز مطرح میشود که دقیقا چه بخشی از سختافزار هست که میخواهید مستقیما کنترل کنید. برای سختافزارهایی که اغلب دسترسی به آنها صورت میگیرد، جاوا ساختارهای کنترلی خوبی دارد.
اگر نمیخواهید چیزی مثل برنامههای کنترل فرآیند بنویسید، بیشترین سختافزاری که به کنترل آن نیاز خواهید داشت ویدئو است. جاوا هماکنون مجموعهای عظیم از کتابخانهها برای کنترل انواع مختلف ویدئو در اختیار شما قرار میدهد که با استفاده از آن بتوانید ویدئوها را سریعتر، آهستهتر، تمام صفحه و … بکنید.
5- جاوا امن نیست
تمام نگرانی در مورد امنیت جاوا از این جا ناشی میشود که در مورد یک برنامهای که از طریق صفحات وب معرفی میشود این امکان وجود دارد که مورد دسترسی، آسیب و پاک شدن یک درایو سخت بدون هیچ تایید یا پیغامی قرار گیرد. این یک تفکر ترسناک است.
درست مشابه چیزهای دیگری که ما را میترسانند، این مساله هم اگر موشکافی شود حل میشود. در این حالت برنامهای که قصد دارد هر کاری با حافظه محلی انجام دهد منجر به خطای security شده و اجرای آن متوقف میگردد. اگر برنامه به صورت دیجیتال امضا شده باشد، وقتی بخواهد به حافظه محلی دسترسی داشته باشد، کاربر یک پنجره میبیند که از او میپرسد آیا این امضا را میشناسد یا خیر. اگر کاربر به هر طریقی نامطمئن باشد، به سادگی “no” را انتخاب کرده و برنامه متوقف میشود.
6- برنامههای جاوا نیاز به یک مرورگر وب دارند
در بسیاری از موارد برنامههای جاوا از یک مرورگر وب به عنوان front end استفاده میکنند. این کار مناسب است چرا که از یک واسط کاربری آشنا و چارچوب رایج استفاده میشود که در مصرف زمان هم برای کاربر و هم توسعهدهنده صرفهجویی میکند.
اما به طور کلی برنامههای جاوا لازم نیست حتما از یک مرورگر وب استفاده کنند. JVM که قبلتر هم اشاره شد، مکانیزمی است که اجازه میدهد برنامهها بدون نیاز به مرورگر اجرا شوند. نکته جالب این است که توسعهدهندگان دو مکانیزم دارند که می توانند یک بار بنویسند و روی هر نرمافزاری که بخواهند اجرا کنند.
7- همه نسخههای جاوا یکی است
یکی از جنبههای آزاردهنده کامپیوترهای مدرن، اعلان متناوب این است که لازم است جاوا به روزرسانی شود. در اینصورت به سایتی برای دانلود منتقل میشوید (البته اگر نیاز به تغییر پروکسی و ip نباشید!). نرمافزار را دانلود کرده، مرورگر را مجددا باز میکنید و ادامه میدهید. مگر این که از کسانی باشید که این پیام را نادیده گرفته و خوشحال با جاوایی با نسخهای ۲ تا ۵ نسخه عقبتر از نسخه جدید به زندگی خود ادامه میدهید 🙂
وقتی بتوانید برنامهها را با همان نسخه قدیمی جاوا اجرا کنید پس تصور میکنید همه نسخههای جاوا یکی هستند، درسته؟ اما این طور نیست. در هر نسخه جدید به روزرسانیهای امنیتی و کارایی صورت میگیرد. کاربرانی که به نسخههای قدیمی پایبند هستند خودشان را در معرض مسائل مختلف امنیتی و کارایی قرار میدهند.
8- OpenJDK برای تولید کد نیست
جاوا ابتدا توسط برنامهنویسان در Sun نوشته شد. وقتی اوراکل Sun را خرید، جاوا را هم خریداری کرد. البته به جز بخشهایی که متنباز بودند.
یکی از نقاطی که این بحث اهمیت پیدا میکند، Java Development Kit میباشد. دو نسخه وجود دارد که بسیار مورد استفاده قرار میگیرند، OpenJDK که یک پروژه متنباز است و Java Platform, Standard Edition که تحت مالکیت و کنترل شرکت اوراکل هستند.
یکی از تصورات این است که تنها Java SE برای توسعه enterprise مناسب است. تصور میشود OpenJDK بسیار کند و مقیاس ناپذیر است. تعداد زیادی از کاربران enterprise اثبات کردند که این تصور درست نیست. یک JDK را براساس ویژگیها و پشتیبانیهایی که از آن میشود انتخاب کنید، نه به این خاطر که فکر میکنید برای توسعه واقعی مناسبتر از دیگری است.
9- مستقل از ماشین یعنی فاصله ماشین
در این زمینه صحبت بسیاری شد اما چون یکی از حوزههای شایعهساز است دوباره به آن برمیگردیم. در زمانهای قدیم، زمانی که دایناسورهای اولیه در زمین حکمرانی میکردند، میتوانستید بحث کنید که زیرساخت و سربار مورد نیاز برای ساخت وسایل مستقل، الزاما وزن زیادی به پکیج وارد میکنند که موجب کندی و حجیم شدن میشود.
در نسخه امروزی جاوا که روی سختافزارهای امروزی اجرا میشود، هیچ یک از این بحثها درست نیست. ممکن است که برنامهای بد به زبان جاوا نوشته شود اما این کار را میتوانید با هر زبانی انجام دهید. اگر شما برنامهای کند و نازیبا نوشتید باید به تیم توسعهدهنده نگاه کنید نه زبان جاوا!
پس ۹ تصور غلط که تعدادی مثبت و تعدادی منفی بودند را بررسی کردیم. برداشت شما چیست؟ عقاید نادرست دیگری هم وجود دارند؟
منبع:
http://www.informationweek.com/
آموزش برنامه نویسی جاوا به زبان متفاوت
https://telegram.me/javalike
سلام
البته من شنیدم که از Open JDK برای توسعهی اندروید نمیشه استفاده کرد.