# Java

### מתוך ויקיפדיה, האנציקלופדיה החופשית

יש לך הודעות חדשות (השווה לגרסה הקודמת).

  ערך זה עוסק בשפת התכנות ג'אווה; לערך העוסק באי ג'אווה באינדונזיה, ראו ג'אווה (אי).

| ערך זה זקוק לעריכה, על מנת שיתאים לסגנון המקובל בוויקיפדיה. לצורך זה ייתכנו סיבות אחדות: פגמים טכניים כגון מיעוט קישורים פנימיים, סגנון הטעון שיפור או צורך בהגהה. אם אתם סבורים כי אין בדף בעיה, ניתן לציין זאת בדף השיחה שלו.

הלוגו של Java.

Java היא שפת תכנות מונחית עצמים אשר פותחה בחברת סאן מיקרוסיסטמס על ידי צוות בראשות ג'יימס גוסלינג בשנת 1991.

## [עריכה] היסטוריה

השפה פותחה לראשונה כפרויקט פנימי בתוך חברת סאן מיקרוסיסטמס, שהחל בדצמבר 1990 בשם "פרויקט החמקן" (Stealth Project), שהוחלף לאחר זמן מה ל"פרויקט הירוק" (Green Project). מטרתו המקורית של הפרויקט הייתה מערכות משובצות מחשב (embedded systems) עבור מכשירים חכמים (smart appliances) שונים, כגון סייען אישי (PDA) ואפילו תנור או מקרר חכם, תחום שסאן צפתה כי יתפתח מאוד מבחינה עסקית.

צוות הפרויקט פיתח שפה חדשה משום ששפות קיימות כגון ++C שנשקלה בתחילה, היו מורכבות מדי וצרכו משאבים גדולים מדי עבור מערכות פשוטות משובצות מחשב. אמנם אחד מהנסיונות הראשונים של הצוות היה כתיבת גרסה שונה של ++C שתקרא "--++++C", אך במהרה החליט הצוות לכתוב שפה חדשה המתבססת על מספר עקרונות ותחביר דומה ל ++C.

מבחינת תשתית השפה, הרעיון הבסיסי היה ליצור "מפרש" שקורא את קוד השפה ומבצע אותה. לכל סביבה יהיה מפרש משלה וכך ניתן לכתוב קוד מקור אחיד עבור סביבות שונות.

השם שהוצע בתחילה לשפה היה Oak (אלון), על שמו של עץ שגדל מחוץ לחלון אחד המפתחים, ובסוף 1992 סאן הקימה חברת בת בשם FirstPerson שייעודה לפתח ולמצוא שימושיים עסקיים לשפה החדשה.

הכיוון אותו בחרה FirstPerson היה ממירים (Set-Top Boxes) לחברות כבלים, שיוכלו להריץ יישומים עבור טלוויזיה אינטראקטיבית. לאחר שני כשלונות במכרזים גדולים (חברות הכבלים חששו ממתן חופש גדול מדי בידי משתמש הקצה) נסגרה החברה והצוות חזר לסאן. (יוער כי המעגל נסגר לאחר שממירים דיגיטליים רבים לכבלים ולוויין תומכים ב-Java, החל מתחילת שנות ה-2000)

ביולי 1994, לאחר שמספר חברים נוספים הצטרפו לצוות, וביניהם אריק שמידט, החליט הצוות על כיוון עסקי שלישי, חדש, והוא ה-Web. הם צפו שהמדיום החדש יהיה זקוק לשפה שבעזרתה יוכל להריץ בתחנות הקצה יישומים אינטראקטיביים ללא תלות במערכת ההפעלה או המעבד, ועל מחשבים חלשים יחסית.

באותה שנה, בפגישה בבית קפה בהשתתפות מספר חברי צוות, הוחלט על שינוי השם מאחר ו־Oak היה רשום כסימן רשום על ידי יצרן אחר. מקור השם Java אינו ברור. יש טוענים שאלו ראשי תיבות של חברי הצוות שנכחו בפגישה: James Gosling, Arthur Van Hoff, and Andy Bechtolsheim וחלק טוענים כי אלו ראשי תיבות של Just Another Vague Acronym ("עוד ראשי תיבות עמומים"). גרסה שלישית טוענת כי השם ניתן על שם הקפה שהוגש באותה פגישה. חיזוק לגרסה האחרונה ניתן למצוא בכך שארבעת בתי המחשב הראשונים (ראה מספר קסם) של כל מחלקה ב-Java הם, בהקסהדצימל: 0xCAFEBABE... (ז'רגון כתיבת מילים באמצעות התוים המותרים בפורמט הקסהצימלי מוכר בשם Hexspeak).

בשנת 1995 הטכנולוגיה הודגמה בכנס על דפדפן נטסקייפ על ידי סיבוב גוף תלת ממדי בעזרת תוכנת קצה בדפדפן המריצה Java וידועה בימינו כיישומון (Applet - יישום קטן אשר רץ בתוך הדפדפן). הטכנולוגיה התקבלה בהתלהבות. משחקי Applet התפתחו זמן מה עד שה-Flash התחיל להחליף את מקומם בזכות יכולת האנימציה שלו.

בנובמבר 2006, הכריזה חברת סאן כי Java תוצע גם תחת רישוי GPL v2. ההכרזה כוללת את השפה והמהדר, הספריות, סביבת הריצה (JVM) והכלים הנלווים. בכך הפכה Java לשפה וסביבה פתוחה וחופשית.

## [עריכה] עקרונות

בדומה לשפת ++C ולשפות אחרות, שפת Java תומכת בפרדיגמת התכנות מונחה העצמים. בהקשר זה יש לציין ששפת Java עדיין כוללת, מטעמי יעילות, גם "טיפוסים פרימיטיביים" (primitive types במקור), שאינם אובייקטים, ועל כן אינה נחשבת שפה מונחית עצמים "טהורה" כ-Smalltalk או Ruby.

שפת Java גם כוללת ניהול זיכרון אוטומטי. המתכנת פטור מן ההכרח לשחרר זיכרון המוקצה לאובייקט ברגע שאין עוד משתנים המצביעים עליו. במקום זאת, סביבת זמן הריצה מבצעת אחת לזמן תהליך של "איסוף זבל", המבצע זאת אוטומטית.

מצד שני ניסו לפשט את השפה ביחס ל־++C וכך נוצרה שפה קלה לזכירה אשר היכולות שלה הם לא במבנה השפה אלא ביצירת ספריות וממשקים סטנדרטים לשפה. תהליך זה התפתח לאתר קהילת פיתוח הסטנדרטים לשפת Java. באתר www.jcp.org משתתפים חברות ויצרני תוכנה וחומרה המעוניינים להוסיף לסטנדרט תמיכה בחומרה ותוכנה, למשל תקן תלת-ממד לטלפוניה המפותח יחד עם חברת נוקיה.

הגרסה הנוכחית של Java היא 1.5. גרסה זו ממוספרת גם 5.0, כשלב מעבר ממספור גרסאות בקפיצות של עשירית (למשל, מ־1.4 ל־1.5) למספור בקפיצות של מספרים שלמים. השינוי בשיטת המספור נובע, ככל הנראה, מן התחרות עם שפת C#‎, שהמיספור שלה קופץ במספרים שלמים, וכבר הגיעה לגרסה 2.0 למרות שיצאה לראשונה מספר שנים לאחר שיצאה לראשונה Java. גרסה זו מכילה מספר הרחבות לשפה, ביניהן הוספת תבניות (Generic Templates), מספר משתנה של פרמטרים לפונקציה ו-ENUM.

במקביל להתפתחות האינטרנט והשרתים של Sun, והרצון לאפשר למפתחים לעבור בקלות מסביבת מיקרוסופט לסביבת שרתי Sun, הבינה החברה שגדולת השפה בעובדה שהיא פועלת מעל מכונה וירטואלית. מרגע שהמכונה הוירטואלית (JVM ‏ -Java Virtual Machine) זמינה על מערכת הפעלה חדשה אזי תוכנה שנכתבה פעם אחת תוכל לרוץ על כל מערכת הפעלה שבה יש מכונה וירטואלית. במהרה פיתחה סאן JVM למערכות ההפעלה האחרות כגון מערכת ההפעלה "Windows" של מיקרוסופט, וכן לינוקס, וכך Java הפכה לתוכנת "כתוב פעם אחת, הרץ בכל מקום" ואף אפשרה העברת התוכנה לשרתי הרשת הגדולים של Sun בעלי מערכת ההפעלה החזקה יותר – Solaris (גם היא דמוית UNIX). חברות נוספות כגון HP ו-IBM אימצו אסטרטגיה דומה, אך כנראה שזה המחיר ש-Sun נדרשה לשלם במסגרת מלחמתה במיקרוסופט (כפי שעשתה שוב בשחרור OpenOffice ללא תשלום). סאן פיתחה בנוסף לשפה ממשק סטנדרטי של פונקציות פיתוח שנקרא J2SE‏ (Java 2 Standard Edition - המספר 2 מתייחס לגרסה- לכל גרסת Java שהיא מעל גרסה 1.1).

כמובן "כתוב פעם אחת הרץ בכל מקום" עדיין דורש ממתכנתים להשתמש ב־API (הממשק התכנותי) בתבונה ועליהם לדאוג לאי תלות במערכת ההפעלה. למשל, על המתכנת להקפיד לשאול את ה־API מהו הסימן המפריד בין רכיבי השמות במסלול קובץ (file seperator) (/ או \ או :, בהתאם למערכת ההפעלה).

## [עריכה] ביצועים

בראשית דרכה סבלה Java מביצועים גרועים, היות ומנועי זמן הריצה בוססו על מפרש בלבד. אולם, עם התפתחות השפה, הוחל שימוש בטכניקה הקרויה JIT‏ - Just In Time, אשר בבסיסה עמד העיקרון של הידור דינמי של קוד המכונה הוירטואלית לקוד המכונה הספציפי בזמן הריצה, על ידי כך מתקבלים ביצועים דומים לשפות כמו C++‎, ותיאורטית אף גבוהים יותר במצבים מסוימים (היות וההידור מתבצע תוך כדי ריצת התוכנה, יש למהדר ידע מדוייק יותר על ריצת התוכנה, מה שמסייע לביצוע אופטימיזציות טובות יותר לקוד).

גישה אחרת לנושא הביצועים מפרידה את עיקרון המכונה הוירטואלית מהשפה, ומהדרת את קוד המקור ישירות לקוד מכונה ספציפי, שרץ ככל תוכנה אחרת במערכת.

## [עריכה] J2EE

עם התרבות השימוש באינטרנט, התברר שיש צורך ביצירת תשתית של תוכנת שרת על ידי שרת התומך ב-Java בשיתוף של משאבים כמו בסיסי נתונים ומבני נתונים, בתמיכה בשרתי HTTP ובדפים דינמיים. כך פותחה JSP, טכנולוגיה של ג'אווה לבניית אתרי Web דינמיים. כך נוצר אוסף הכלים של ה- Enterprise Edition הנקרא בקיצור J2EE.

שרת יישומים זה הצליח עד כדי כך שמיקרוסופט מנסה ב-NET. לתת פתרון דומה. ישומים כבדים באמת כמו SAP עזבו את העולם הסגור של Windows ובחרו לעבוד עם J2EE. ולמעשה רוב הקוד והפיתוח ב־Java בימינו מבוסס על תשתיות אלו. חברות כמו BEA פיתחו שרת לתשתיות אלו ובמקביל קבוצת JBoss פיתחה שרת המבוסס על קוד פתוח.

## [עריכה] J2ME

תכונה זו של ניתוק ממערכת ההפעלה על ידי כתיבת JVM החוצצת בין התוכנה למערכת ההפעלה אומץ לתחום אחר והוא הטלפונים החכמים כחלק מקבוצה של התקנים מוטמעים (Embeded Devices). גם בתחום זה ריבוי המכשירים, מערכות ההפעלה, וסוגי המעבדים השונים נתנו יתרון לפיתוח מבוסס JVM. בתחום זה מספקת Sun את J2ME‏ (Java 2 Mobile Edition), שהיא גירסה קלת-משקל וקומפקטית למכשירי טלפון סלולרי ומחשבי כף יד.

## [עריכה] ראו גם

- מונחים בתוכנה

## [עריכה] קישורים חיצוניים

- http://java.sun.com
- http://www.java.net
- http://www.java.com
- http://jcp.org
- אתר ללימוד ג'אווה חינמי בעברית
- כתבה ב-YNET לכבוד יום ההולדת ה-10 של השפה

מקור: http://he.wikipedia.org../../../j/a/v/Java.html

קטגוריות: ויקיפדיה: ערכים הדורשים עריכה | שפות תכנות

##### Views

- ערך
- שיחה
- גרסה נוכחית

##### קהילה

- שער הקהילה
- עזרה
- דלפק ייעוץ
- מזנון
- יצירת קשר
- ספר אורחים

##### חיפוש

##### שפות אחרות

- English
- العربية
- Български
- Bosanski
- Català
- Česky
- Dansk
- Deutsch
- Ελληνικά
- Esperanto
- Español
- Eesti
- فارسی
- Suomi
- Français
- Galego
- Hrvatski
- Magyar
- Bahasa Indonesia
- Íslenska
- Italiano
- 日本語
- 한국어
- Lietuvių
- Latviešu
- Македонски
- Bahasa Melayu
- Nederlands
- Norsk (bokmål)
- Polski
- Português
- Русский
- Simple English
- Slovenčina
- Slovenščina
- Српски / Srpski
- Svenska
- தமிழ்
- ไทย
- Tagalog
- Türkçe
- Українська
- Tiếng Việt
- 中文