ג'אווה היא שפת תכנות מונחית עצמים שפותחה בסאן מיקרוסיסטמס בראשות ג'יימס גוסלינג בשנת 1991. הוצגה לראשונה ב-1995 והיא חלק מרכזי מפלטפורמת התוכנה של ג'אווה. התחביר מזכיר ++C, אך נוספו יכולות לתמיכה בתהליכונים (ריצת מספר משימות בו־זמנית), אבטחה ובשימוש ברשת.
ג'אווה מקומפלת בדרך כלל ל־Java bytecode, שפת ביניים שמריצה מכונה וירטואלית בשם JVM (Java Virtual Machine). הודות לכך תוכניות ג'אווה יכולות לרוץ על מערכות שונות בלי שינוי, מטלפונים ועד מחשבי-על. ב־1996 נוסד הכנס השנתי JavaOne, שמאגד מפתחים ומשתמשים.
הפרויקט החל כ"Stealth" ו"Green" במטרה לפתח תוכנה למערכות משובצות מחשב (מכשירים חכמים). השם המקורי היה Oak (אלון), והוא הוחלף בג'אווה; קיימות גרסאות שמקשרות את השם לאנשי הצוות או לקפה מאינדונזיה. בתחילת הדרך ניסו ליישם את השפה על תיבות ממיר (set-top boxes), אך לאחר כישלונות העסקה הצוות חזר לסאן והעביר את המוקד לאינטרנט. ב־1995 הודגמו אפלטים (Applets) בדפדפן Netscape.
גרסה 5.0 (2004) הציגה קפיצה משמעותית, ובה נכללו Generics, מנגנון לכתיבה בטוחה של מבני נתונים גנריים. בהמשך נוספו שיפורים חשובים: בגרסה 7 נוסד try-with-resources לניהול משאבים, בגרסה 8 נוספה תמיכה נרחבת בתכנות פונקציונלי (למבדות, פונציות קצרות, Streams, כלי לעיבוד אוספים, forEach), ובגרסה 9 נוספו מתודות ברירת-מחדל בממשקים ועוד כלים לאוספים.
בנובמבר 2006 הכריזה סאן על הצעת רישוי GPL v2 לשפה, למהדר ולספריות, וב־2007 הושלם מעבר לקוד פתוח.
ג'אווה היא שפה עם טיפוסיות סטטית חזקה: לכל ביטוי יש טיפוס קבוע, והתקינות נבדקת בזמן הידור ככל האפשר. יש תמיכה מלאה בתכנות מונחה עצמים, אך קיימים טיפוסים פרימיטיביים (כמו int) שנועדו ליעילות. לכל טיפוס פרימיטיבי יש מחלקה עוטפת (wrapper), וניתנת המרה אוטומטית שנקראת Boxing.
ניהול זיכרון הוא אוטומטי באמצעות מנגנון "איסוף זבל" (Garbage Collection), שמוחק אובייקטים שאינם בשימוש עוד. ג'אווה תומכת בירושה יחידה (אותה מחלקה ניתן להרחיב פעם אחת בלבד) ומציעה ממשקים (interface) כדי לדמות ירושה מרובה ובכך למנוע כפילויות משמעות.
למרות התמיכה באובייקטים, השימוש בטיפוסים פרימיטיביים מראה שהיא אינה "טהורה" לחלוטין כתבניות כמו Smalltalk.
1. ירושה, מחלקה יכולה לקבל תכונות ממחלקה אחרת.
2. כימוס (Encapsulation), מסתירים נתונים פנימיים ומספקים גישה דרך מתודות.
3. פולימורפיזם, אובייקטים שונים מגיבים באופן שונה לקריאה לאותה מתודה.
4. אבסטרקציה, מייצגים ישויות עיקריות ומסתירים פרטים מיותרים.
5. ממשק, חוזה שמגדיר מתודות שמחלקה צריכה ליישם.
בהתחלה ג'אווה רצה באמצעות מפרש בלבד, מה שהאטה אותה. עם הזמן נוסף JIT (Just In Time): מהדר שרץ בזמן הריצה והופך קטעים לקוד מכונה מהיר יותר. זה משפר ביצועים ולעיתים מתקרב או עולה על ++C בתנאים מסוימים. מצד שני ג'אווה צורכת זיכרון רב יותר, בעיקר בגלל טעינת ספריות המכונה הווירטואלית, וכן כל קריאה לשיטה כוללת חיפוש בזמן ריצה.
התוכנית בדוגמה בודקת האם מספר הוא ראשוני. ההערות בקוד מתחילות ב־// ומשמשות להסבר. התוכנית מחולקת לפונקציה שבודקת גורם ולאחת שמקבלת קלט ומציגה פלט.
גרסת Enterprise לבניית יישומי שרת גדולים ולדפים דינמיים, כולל טכנולוגיות כמו JSP. תשתית זו משמשת רבות בארגונים ותומכת בשיתוף משאבים כמו מסדי נתונים.
גרסה קלת־משקל למכשירים משובצים, כגון טלפונים סלולריים ומחשבי כף יד. היא מאפשרת להריץ תכניות Java על מגוון חומרות ומערכות הפעלה.
ג'אווה היא שפת תכנות שיצרו בסאן בשנות ה-90. המפתח המרכזי היה ג'יימס גוסלינג. השפה הוצגה ב-1995.
הפרויקט התחיל בשם Green והשם הראשון היה Oak. בהמשך שמה שונה לג'אווה. יש שמקשרים את השם לקפה ג'אווה.
ג'אווה הומצאה תחילה למכשירים חכמים. אחר כך כוונה לאינטרנט. ב-1995 הראו אפלטים (יישומים קטנים בדפדפן) בדפדפן Netscape.
תוכניות ג'אווה מומרות ל־bytecode. זהו קוד ביניים שמריץ תוכנה שנקראת JVM. JVM היא תוכנה שמריצה תוכניות ג'אווה על מחשבים שונים.
איסוף זבל (Garbage Collection) מנקה זיכרון באופן אוטומטי. זה חוסך לזכור לשחרר זיכרון לבד.
ג'אווה משתמשת גם בטיפוסים פשוטים (כמו int). לכל אחד מהם יש מחלקה עוטפת שעוזרת לשלב אותו עם אובייקטים.
1. ירושה, אפשר להוריש תכונות ממחלקה אחת לשניה.
2. כימוס, מסתירים מידע ונותנים רק גישה בטוחה.
3. פולימורפיזם, עצמים שונים יכולים להגיב אחרת לאותה קריאה.
4. אבסטרקציה, מציגים רק את מה שחשוב.
5. ממשק, רשימת מתודות שמחלקה חייבת להציע.
בהתחלה ג'אווה הייתה איטית כי היא הופעלה על ידי מפרש. לאחר מכן הוסיפו JIT, שממירה חלקים לקוד מהיר בזמן הריצה.
דוגמה פשוטה בודקת אם מספר הוא ראשוני. הערות בקוד מתחילות ב־//.
גרסה לבניית שרתי אינטרנט ויישומי ארגונים.
גרסה קלה לטלפונים ומכשירים קטנים.
תגובות גולשים