שפת ג'אווה כוללת גם ניהול זיכרון אוטומטי. המתכנת פטור מן ההכרח לשחרר זיכרון המוקצה לאובייקט ברגע שאין עוד משתנים המצביעים עליו. במקום זאת, סביבת זמן הריצה כוללת מנגנון "איסוף זבל", המבצע זאת אוטומטית.
ג'אווה מאפשרת ירושה יחידה בלבד, וזאת על מנת למנוע בעיות דו־משמעות הנוצרות מירושת יהלום. כדי לאפשר גמישות דומה לזו של ירושה מרובה, קיים בג'אווה מנגנון ממשק (interface) המגדיר רשימה של מתודות, המהווה חוזה עם המתכנת. כך כל מחלקה יכולה להרחיב (extends) לכל היותר מחלקה אחת, ולממש (implements) מספר בלתי מוגבל של ממשקים. על המחלקה לממש במפורש כל מתודה בכל ממשק כזה, וכך לא קיימת בעיה של כפל משמעות.
בגרסה 5.0 נוספו מספר הרחבות חשובות לשפה, ביניהן תכנות גנרי (Generics), מספר משתנה של פרמטרים לפונקציה וטיפוסי מניה (Enums).
בגרסה 7 של השפה נוספה תמיכה בהקצאת משאבים תחומה־לקסיקלית - בלוקים של try-with-resources.
בגרסה 8 של השפה נוספה תמיכה נרחבת וישירה בטכניקות של תכנות פונקציונלי; בין היתר נוסף תחביר עבור פונקציות למבדא, נוסף תחביר להעברה של מתודות כפרמטר, נוספו ממשקים עבור פונקציות, נוסף טיפוס נתונים מובנה Stream התומך בפונקציות מסדר גבוה ובפעולות כגון map או collect ונוספה מתודה forEach לטיפוס הנתונים Iterator.
בגרסה 9 של השפה נוספה האפשרות למימוש ברירת-מחדל עבור מתודות בממשקים, נוספו מתודות ייצור סטטיות עבור אוספים כגון List, ונוספו מתודות שונות ל Option ול Stream.
ביצועים.
בראשית דרכה סבלה ג'אווה מביצועים גרועים, היות שמנועי זמן הריצה בוססו על מפרש בלבד. אולם, עם התפתחות השפה, הוחל שימוש בטכניקה הקרויה JIT - Just In Time, אשר בבסיסה עמד העיקרון של הידור דינמי של קוד המכונה הווירטואלי לקוד המכונה הספציפי בזמן הריצה. על ידי כך מתקבלים ביצועים טובים יותר, ותאורטית אף גבוהים יותר משפת ++C במצבים מסוימים (היות שההידור מתבצע תוך כדי ריצת התוכנה, יש למהדר ידע מדויק יותר על ריצת התוכנה, מה שמסייע לביצוע אופטימיזציות טובות יותר לקוד).
גישה אחרת לנושא הביצועים מפרידה את עיקרון המכונה הווירטואלית מהשפה, ומהדרת את קוד המקור ישירות לקוד מכונה ספציפי, שרץ ככל תוכנה אחרת במערכת. עם זאת, גם בהידור כזה ישנו חיסרון לעומת שפות כמו ++C שעוצבו במיוחד לאפשר ריצה מהירה. לדוגמה, כל קריאה לשיטה בג'אווה כוללת חיפוש בזמן ריצה של השיטה המתאימה, בניגוד לשפת ++C בה קריאה לשיטה שאינה מוגדרת כוירטואלית שקולה לקריאה לפונקציה רגילה. בנוסף לכך ג'אווה נודעת בצריכת זיכרון גבוהה בהשוואה לקוד דומה שנכתב בשפה כגון שפת ++C, זאת עקב טעינה של ספריות ניהול של המכונה הווירטואלית. צריכת זיכרון גבוהה זו באה לידי ביטוי בעיקר במערכות הפעלה מסוג UNIX.
דוגמה לתוכנית בשפת ג'אווה.
התוכנית המופיעה להלן כתובה בשפת ג'אווה, והיא בודקת האם מספר שהועבר אליה הוא מספר ראשוני. הסימן "//" מציין שהטקסט שמימינו אינו חלק מקוד התוכנית, אלא הוא הערה שמטרתה להסביר את התוכנית למתכנת הקורא אותה. התוכנית מחולקת לשתי פונקציות, האחת בודקת האם מספר נתון הוא ראשוני, והשנייה מטפלת בדיאלוג עם המשתמש: קבלת המספר לבדיקה (קלט) והצגת תוצאות הבדיקה (פלט).
import java.util.Scanner;
public class JavaProgram
public static int getFactor (int num)
double sqrt = Math.sqrt(num);
// try to find a factor that is not 1.
for (int i = 2; i &lt;= sqrt; i++) {
if (num % i == 0) // is num divisible by i?
return i;
return 1; // num is a prime.
} // End of getFactor function.
public static String communicate (int num)
{ // communicate with the user.
if (num &lt;= 0)// is it a valid input?
return "The checked number should be positive";
int factor = getFactor(num);
if (factor == 1)
return num + " is a prime";
return num + " is not a prime, " + num + " = " + num/factor + " × " + factor;
} // End of communication function
public static void main (String [] args)
Scanner in = new Scanner(System.in);
System.out.println(communicate(in.nextInt()));
גרסאות.
סאן הגדירה מספר גרסאות לג'אווה המיועדות לסביבות שונות:
עם התרבות השימוש באינטרנט, התברר שיש צורך ביצירת תשתית של תוכנת שרת על ידי שרת התומך בג'אווה בשיתוף של משאבים כמו בסיסי נתונים ומבני נתונים, בתמיכה בשרתי HTTP ובדפים דינמיים. כך פותחה JSP, טכנולוגיה של ג'אווה לבניית אתרי Web דינמיים. כך נוצר אוסף הכלים של ה־Enterprise Edition הנקרא בקיצור J2EE. לאחר מכן שונה השם ל-J2E.
שרת יישומים זה הצליח עד כדי כך שמיקרוסופט מנסה ב־NET. לתת פתרון דומה. יישומים כבדים באמת כמו SAP עזבו את העולם הסגור של Windows ובחרו לעבוד עם J2EE. ולמעשה רוב הקוד והפיתוח בג'אווה בימינו מבוסס על תשתיות אלו. חברות כמו BEA פיתחו שרת לתשתיות אלו ובמקביל קבוצת JBoss פיתחה שרת המבוסס על קוד פתוח.
תכונה זו של ניתוק ממערכת ההפעלה על ידי כתיבת JVM החוצצת בין התוכנה למערכת ההפעלה אומץ לתחום אחר והוא הטלפונים החכמים כחלק מקבוצה של התקנים משובצי מחשב (Embedded Devices). גם בתחום זה ריבוי המכשירים, מערכות ההפעלה, וסוגי המעבדים השונים נתנו יתרון לפיתוח מבוסס JVM. בתחום זה מספקת Sun את J2ME (Java 2 Mobile Edition), שהיא גרסה קלת־משקל וקומפקטית למכשירי טלפון סלולרי ומחשבי כף יד.
פורטוגזית
פורטוגזית (על-פי מתקני לשון: פורטוגלית) היא שפה איברו-רומאנית מתוך קבוצת השפות הרומאניות במשפחת השפות ההודו־אירופיות וקרובה במיוחד לספרדית וגליסית. פורטוגזית מדוברת בפורטוגל ובחלק ממושבות העבר שלה, ברזיל, אנגולה, מוזמביק, גינאה ביסאו, מזרח טימור, איי כף ורדה וסאו טומה ופרינסיפה. הפורטוגזית מדוברת כיום בפי כמאתיים מיליון בני אדם ברחבי העולם. רוב דוברי הפורטוגזית חיים בברזיל. קהילת המדינות הדוברות פורטוגזית היא קהילה פוליטית לשיתוף פעולה בין מדינות ששפתן ותרבותן מבוססות על השפה הפורטוגזית, המכונות "מדינות לוזופוניות" על שם הפרובינקיה הרומאית לוזיטניה, ששטחה חפף בקירוב את שטח פורטוגל. הקהילה, המכונה בראשי תיבות CPLP, הוקמה בשנת 1996.
השפה הקרובה ביותר לפורטוגזית היא הגליסית, אשר התפתחה יחד איתה במערב חצי האי האיברי מתוך הלטינית הוולגארית שדוברה שם בימי הביניים המוקדמים, כאשר במהלך הכיבוש המוסלמי נספגו בפורטוגזית מילים רבות ממקור ערבי אף שלא הייתה לערבית השפעה עמוקה יותר מעבר לאוצר מילים. במובן הזה ניתן להגיד כי הפורטוגזית, מבחינה מורפולוגית ותחבירית, מהווה דוגמה לשפה רומאנית שהתפתחה מהלטינית הוולגרית ללא השפעה ישירה כמעט, כאשר אף כיום 90 אחוז מאוצר המילים הפורטוגזי נובע ממנה.
במאה ה-16, עם תחילת המסעות הימיים והגילויים הגדולים (ראו האימפריה הפורטוגזית), התפשטה הפורטוגזית לחלקים בדרום אמריקה, אפריקה ואסיה, ואז גם החלו להתרחש מרבית השינויים בשפה הפורטוגזית. ישנם הבדלים מסוימים בהגייה, באוצר המילים ובתחביר בין הפורטוגזית האירופאית לפורטוגזית הברזילאית, עקב הריחוק הגאוגרפי, דבר שניכר בעיקר באמרות וביטויים פופולריים.
בתקופת המסעות הימיים, הגילויים הגדולים וההתיישבות הייתה הפורטוגזית בסיס ליצירת כמה שפות קריאוליות, המדוברות בעיקר בקהילות מעורבות של פורטוגזים וילידים.
השפה הפורטוגזית נודעת בכינוי "שפתו של קמואש" ("A língua de Camões"), כהוקרה ללואיש דה קמואש, משורר פורטוגזי בן המאה ה-16, מחבר היצירה האפית "הלוסיטנים". המשורר הברזילאי אולאבו בילאק תיאר אותה בכינוי "פרח לאטיום האחרון, פראי ויפה" ("a última flor do Lácio, inculta e bela"). מיגל דה סרוונטס, המשורר הספרדי הנודע, תיאר את הפורטוגזית כ"שפה מתוקה שערבה לאוזן".
הגיית השפה וכתיבתה.
לפורטוגזית שני ניבים עיקריים: פורטוגזית אירופית (פורטוגזית) ופורטוגזית ברזילאית. בשל הריחוק בן מאות השנים, קיימים הבדלי הגייה הן בעיצורים והן בתנועות.
ברזיל
הרפובליקה הפדרלית של ברזיל (בפורטוגזית: República Federativa do Brasil, נהגה: ברזיאוּ ) היא המדינה הגדולה ביותר בשטחה ובאוכלוסייתה בדרום אמריקה, השישית בשטחה ובאוכלוסייתה בעולם.
ברזיל חולשת על שטח גדול, בין מרכז היבשת לבין האוקיינוס האטלנטי; זו המדינה המזרחית ביותר ביבשת אמריקה. היא גובלת בעשר מדינות - למעשה בכל מדינות דרום אמריקה, מלבד אקוודור וצ'ילה. בדרום היא גובלת באורוגוואי, בדרום-מערב בארגנטינה, במערב בפרגוואי, בבוליביה ובפרו, בצפון-מערב בקולומביה, ובצפון בוונצואלה, בגיאנה, בסורינאם ובגיאנה הצרפתית.
בברזיל אדמות חקלאות פוריות וגם יערות גשם עצומים, אשר המפורסם שבהם הוא יער האמזונאס. ניצול אוצרות הטבע של המדינה והתיעוש הנרחב שהתפתח בה הפכו את ברזיל למעצמה כלכלית מובילה בדרום אמריקה ולמנהיגה אזורית. מדד הפיתוח האנושי של ברזיל הוא גבוה יחסית לשכנותיה, על אף הפערים החברתיים הניכרים השוררים בין שכבות החברה הברזילאית.
המדינה נקראת על שם עץ הברזיל (pau-brasil), שגדַל בה בשפע עד אמצע המאה ה-16 (כיום בסכנת הכחדה); ראשוני המתיישבים האירופאים העריכו אותו כמשאב טבע חשוב. שם העץ נגזר מן המילה "בראזה" (brasa), שפירושה בפורטוגזית "גחלת", בהשראת הגוון הכתום-אדום של ליבת גזע עץ הברזיל.