زبان برنامهنویسی جاوا چند سالی است که رتبه اول رو داره، زیان برنامهنویسی C بیشتر برای پیادهسازی برنامههای کاربردی سطح پایین استفاده میشه ولی جاوا برای پیادهسازی برنامههای کاربردی سطح بالا، زبانبرنامهنویسی C# رو میشه به وانت تشبیه کرد و جاوا رو به خاور از این جهت که:
زمان تولید نرمافزار در C# نسبت به جاوا بسیار پایینه، ما زمانی از جاوا استفاده میکنیم که فاز توسعه نرمافزار برای ما خیلی اهمیت داشته باشه خب بهتره بدونید بسیاری از پروژههای نرمازفاری در ایران اصلاً فاز توسعه ندارن
نکته: هر ابزاری جای خودش رو داره، مثلاً پراید رو کسی نمیبره تو فرمانیه گلگریش رو رنگ کنه، این که ما بیایم زبانها رو باهم مقایسه کنیم اصلاً در اندازه ما نیست و ضمناً هر زبان و تکنولوژیای جای خودش رو داره
اوراکل سان ماکرو سیستم رو خرید و جاوا الان ماله اوراکله
جاوا یکسری خواص عالی داره
- Object Oriented
- (RO (Reflect Oriented
بدون اینکه برنامه رو بیاریم پایین میتونیم برنامه رو توسعه بدیم
( پروژه بالاست و کاربران دارن باهاش تعامل میکنن همون بالا بهش میخوایم متد اضافه کنیم)
اکثر زبانهای اسکریپتی این خاصیت رو دارا هستن
جاوا و جاوا اسکریپت هیچ ربطی باهم ندارن اسم اصلیاش لایو اسکریپت بوده ماله شرکت netscape
جاوا اسکریپت یک زبان اسکریپت نویسی است و جاوا یک زبان برنامهنویسی
به زبانی که کامپایلر نداره و مفسری هستن زبان اسکریپتی میگن
جاوا زبان کامپایلری است که خاصیت RO رو داره
- AO (Aspect Oriented)
یه متد داریم n1 چاپ میکنه سلام یه متد داریم n2 چاپ میکنه خداحافظ یه متد دارم متد main چاپ میکنم n1 و n2 این خاصیت AO است خروجی امیرسام سلام خداحافظ چطوری؟ بدون اینکه به روال و کلاس دست بزنم تو یه فایلی میتونم بنویسم هرگاه متد n1 صدا شد قبلش چاپ کن امیرسام و هرگاه متد n2 صدا شد بعدش چاپ کن چطوری؟
یعنی ساختار رو تغییر نمیدی از بیرون ساختار رو کنترل میکنی | این ساختار رو قبل از OO داشتیم (در C و CPP حذف کرد AO رو) یعنی دیدگاه AO رو داشتیم (کنترل برنامه در جایی دیگه) | کاربرد: یکسری از پروژهها که مستند هم ندارن و زمان مهندسی معکوس هم نداریم که معکوس کنیم بدون دست زدن به ساختار برنامه میایم توسط یک فایل خارجی میایم و برنامه رو کنترل میکنیم چون مطمئن نیستم کجاها متد n1 صدا زده شده فقط میگیم هرگاه متد n1 چاپ شده باشه فلان کارو کن | زمانی بدرد میخوره که میخوایم بدون مهندسی معکوس پروژه رو توسعه بدیم
خلاصه: جاوا ۳ تا خاصیت داره OO& RO & AO
جاوا native قبول میکنه یعنی در جاوا میتونید از زبان C استفاده کنید یعنی یه متد رو با C بنویسید و یه متد رو با جاوا البته دچار یک نقص اساسی میشید (جاوا native سی قبول میکنه و C اسمبلی)
خاصیت بعدی FP (Free Platform) روی همهی پلتفرمهای معروف دنیا قابلیت اجرا داره (بایت کد | جاوا کد ماشین بیرون نمیده)
جاوا امنه | جاوا امن نیست | هیچ زبان برنامهنویسی امن نیست | امنیت به زبان برنامهنویسی مربوط نمیشه | شعور امنیت میخواد
( امنیت زبانی راجع به امنیت ساختاری صحبت میکنه )
انواع نرمافزار
- سیستمی (سیستمعاملها)
- کاربردی (دستهبندیهای مختلف میشن) (نسبت به نوع سکوی اجرایی)
- (دسکتاپ اپلیکیشنها)
- (ماکرو اپلیکیشنها)
- (وب اپلیکیشنها)
- (وپ اپلیکیشنها)
- (کارت اپلیکیشنها)
- (آندروید اپلیکیشنها)
- دسکتاپ اپلیکیشنها روی کامپیوتر مجری سوار میشن (یا نصب یا کپی) و پردازش روی کامپیوتر مجریه
- ماکرو اپلیکیشنها مثل برنامههایی که رو موبایل سوار میشه یا ماشین لباسشویی یا تلوزیونهای قدیمی یا مثل برنامه ماکروویو یا برنامه موشک
- یه تفاوت عمده با دسکتاپ اپلیکیشن دارن ماکرو اپلیکیشنها بیشتر روی یک ماکروکنترلر نصب میشن
- وب اپلیکیشن مثل سایت گوگل (تفاوت وبسایت با وبسرور اپلیکیشن: وب سرور اپلیکیشن بهتون سرویس میده ولی سایت فقط یه صفحه بهتون نمایش میده(محتوای خام)) وب بیس اپلیکیشن: نرمافزار کاربردی تحت وبی که به کاربر سرویس میده حالا یا سرور ساید یا کلاینت ساید | مجموعه خدمتهایی که در یک راستا دارن به شما خدمات ارائه میکنن
- وپ اپلیکیشن (گوشیهای خیلی قدیمی توانمندی اتصال به اینترنت رو نداشتن ولی توانایی اتصال به وپ رو داشتن (تو ایران فعال نشد) برنامهای که تو شبکه وپ است رو میگن وپ اپلیکیشن | فرقش با وب اپلیکیشن: وب html است برای بیسیم و پیجر قابل فهم نیست زبان وپ wml است که خیلی سبکتر از html است)
- CGI: زبان برنامهنویسی نیست یک تکنولوژی برای زبان برنامهنویسی C
- کارت اپلیکیشنها، ما ۲ نوع کارت داریم یک کارت بیشعور (مغناطیسیها دارای یک رشته است و فقط دارای یک اطلاعات خاص هست (مثل شماره حساب) اینو ATM میخونه و تمام اطلاعات شما درون سرورهای بانکه)
و کارت هوشمند (دارای چیپ و میتونه تو اون قسمت روش یک نرمافزار سوار بشه یعنی خود کارت نرمافزاره و اطلاعات مختلفی میشه رو سوار کرد) کارت سوخت (چرا هوشمند شد؟ بجز بالا رفتن هزینه، چون کاربردی نداره(مگر کیف پول الکترونیکی))، کارت پایان خدمت، کارت ملی هوشمند (نرمافزار رایگیری برای مجلس و ریاست جمهوری، پیگیری بیمارستان)
- آندروید اپلیکیشنها: نرمافزاری برای سیستمعامل آندروید، نرمافزارهایی که مخصوص سیستمعامل آندروید نوشته میشه
- فرقشون با نرمافزارهای ماکرو و کارت: یا شبیه به دسکتاپ اپلیکیشن هستن یا شبیه به کارت اپلیکیشن یا شبیه ماکرو اپلیکیشن، تفاوت اصلی اینها باهم یک چیزه، دسکتاپ اپلیکیشن تفاوتی با آندروید اپلیکیشن نداره، گوشیهای آندروید دارای یکسری سنسور هستن اگه بخواین دسکتاپ با این سنسورها کار کنی خیلی کار سخت میشه اومدن یه ویرایشی تولید کردن که راحتتر بتونید کار کنید
- J2SE
- J2ME
- J2EE
- J2EE
- Java Card (Smart Card)
- Android SDK
(جاوا ابزار خوبی برای دسکتاپ اپلیکیشن نیست)
- اسم کلاس دلالت بر اسم فایل داره
- اسم پکیج دلالت بر اسم دایرکتوری داره
- Javac name.java
- Java package.nameclass
- اسم کلاس باید با اسم فایل و ... کلاًباید یکی باشه چون جاوا کلاً حساسه case senstivy
- تازمانی که خطای برنامه رفع نشه کامپایل انجام نمیشه و فایل class اجرا نمیشه
- Openjdk واسه زمانیه که میخوای از jdkاون سورس استفاده کنی (بیشتر تو لینوکس)
- IDE مورد استفاده Intellij IDEA
- Netbeans استفاده نشه شما جاوا کارید نه C#