10 סיבות מדוע ג'אווה עדיפה על NET.
מדוע ג'אווה עדיפה על Net.? יש לכך הרבה סיבות, אבל עשר הסיבות החשובות ביותר הן ללא ספק אלו
הפוסט נכתב על ידי שימי בנדיאל, CTO בחברת Trainologic ומרצה בכיר בג'ון ברייס מכללת היי-טק. בנדיאל עוסק בפיתוח למעלה מ-10 שנים והינו מדריך ויועץ בכיר ומומחה לטכנולוגיות ג'אוואיות, שיפורי ביצועים ועיצוב ארכיטקטורת תוכנה.
אני אוהב את ג'אווה. טוב נו, לא באמת את השפה עצמה אלא בעיקר את הפלטפורמה. לא מזמן במהלך קורס ג'אווה שהעברתי השתתפו מספר אנשים שהגיעו מעולם ה-C או Net# והביעו אכזבה מהשפה. אני מבין את התסכול ומסכים שג'אווה בתור שפת תכנות חלשה משמעותית מ-C#. אבל לדעתי הפלטפורמה הינה באופן משמעותי טובה יותר ועל הנושא הזה הייתי רוצה להרחיב.
אז מדוע לדעתי פלטפורמת הג'אווה עדיפה?
1. תאימות בין מערכות הפעלה: קוד Java מהודר לקוד מכונה של ה-JVM. ישנם מספר JVMs בשוק המתאימים למערכות הפעלה רבות כולל פלטפורמות embedded. חברות רבות מריצות אפליקציות ג'אווה על Linux ו-Unix. למרות שגם ל-Net. קיימים מימושים של CLR לפלטפורמות נוספות מלבד חלונות, אבל הם אינם בשימוש נרחב ואין הרבה חברות מסחריות שמריצות קוד עליהם.
2. מבחר גדול של ספריות קוד פתוח: בעולם הג'אווה ישנן אינספור ספריות קוד פתוח (הרבה יותר מאשר ב-Net.). להלן מספר דוגמאות:
- Spring – ספרייה המעניקה שירותי ניהול והזרקת תלויות (Dependency Injection) ומקלה על הפיתוח במבחר תחומים בפיתוח אפליקציות אירגוניות.
- Hibernate – ספרייה נפוצה למיפוי עצמים למסד נתונית רלציוני (ORM).
- Logback – ספריית רישום (logging) בעלת ביצועים מעולים.
- AspectJ – ספרייה לתכנות מונחה היבטים. זאת הספרייה הראשונה שהייתה בתחום ומאפשרת לפתור בצורה מודולרית בעיות רוחביות כגון ניהול טרנזקציות, עיקוב (tracing), ניתוח ביצועים ועוד.
- Akka – ספרייה לפיתוח מערכות מבוזרות ומרובות חוטים (threading) המאפשרת לבנות בפשטות מערכות עם יכולת התרחבות (Scaling) העומדות בקצבים גדולים מאוד.
3. סטנדרטיזציה: בעולם הג'אווה, לרוב הנושאים יש סטנדרטים המוגדרים ע"י אירגון ה-JCP. לכל סטנדרט יש בדרך כלל מספר מימושים, דבר המאפשר לכותבי האפליקציות להחליף מימושים של ספריות ללא צורך לשנות את הקוד. לדוגמה, מי שמשתמש בסטנרדט ה-EJB לכתוב לוגיקה עיסקית ולקבל מספריית שרת האפליקצייה שירותי טרנזקציות וביזור, יכול לעבור משרת WebSphere ל-WebLogic או להיפך. או לעבוד עם JBoss, Geronimo או מספר אחרים. לדעתי זו תכונה חשובה המאפשרת גמישות רבה.
Java EE. 4: ישנם מספר סטנדרטים המתאימים לפיתוח אפליקציות אירגוניות המאוגדים תחת סטנדרט אחד הנקרא JavaEE. המיוחד בסנדרטים אלה הוא העובדה שהם דורשים אפליקציה מיוחדת (Application Server) המעניקה את השירותים הנ"ל. סטנדרטים אלה מטפלים בפיתוח אפליקציות אינטרנט, ביזור אפליקציות בין שרתים, תמיכה ב-security, ניהול משאבים, הודעות א-סינכרוניות ועוד מספר רב של נושאים.
5. תחרות: ישנן מספר חברות גדולות המציעות מוצרים מתחרים בעולם הג'אווה. לדוגמה Oracle, IBM, RedHat שמציעים שרתי אפליקציה. הן מציעות גם סלי מוצרים רבים הכוללים כלי ניהול תהליכים עיסקיים (BPM), פלטפורמות SOA ועוד. ישנם מספר מסדי נתונים בג'אווה, מנועי חיפוש מבוזרים (ElasticSearch, Solr) ועוד…
6. ביצועים: לג'אווה ביצועים טובים ביותר. זה נובע בעיקר מה-JVM והאופטימיזציות החזקות המתבצעות בו. מעבר לכך, ישנם מימושים שונים ל-JVM וחלקם נותנים ביצועים טובים יותר מהאחרים. לדוגמה, ה-JVM של Azul ידוע באוסף האשפה (garbage collector) היעיל מאוד שלו.
7. כיוונון ביצועים: בנוסף לביצועים המצויינים, יכולת קונפיגורציית ה-JVM הינה חזקה מאוד. לדוגמה ל-JVM של Oracle יש למעלה מ-700 תכונות קונפיגורצייה שונות (configuration flags).
8. תאימות לאחור: למרות שבתור מפתח זה מאוד מתסכל שג'אווה בתור שפה נשארה מאחור מבחינת יכולות לעומת C#, אני חייב לציין שתאימות לאחור הינה תכונה חשובה מאוד עבור אירגונים רבים. הרבה אירגונים מעוניינים לודא שקוד שנכתב לפני שנים רבות עדיין ניתן להידור ויעניק את אותן התוצאות. ג'אווה שומרת על תאימות כמעט מוחלטת בין גירסאות.
9. אנדרואיד: פלטפורמת ה-מובייל המובילה מבוססת על ג'אווה. למרות שגוגל לא מריצים JVM קלאסי, עדיין שפת התכנות הינה ג'אווה. זהו עוד יתרון לעולם הג'אווה.
10. פופולאריות: למרות ששתי הפלטפורמות (ג'אווה ו-Net.) ושתי השפות (ג'אווה ו-C#) מאוד נפוצות, עדיין ג'אווה נפוצה יותר וקצת יותר קל למצוא בה מפתחים המנוסים בפלטפורמות השונות. הרבה יותר קל למצוא מפתח ג'אווה שמכיר Hibernate מאשר מפתח Net. שמכיר את NHibernate.
אז, אחרי שראינו למה ג'אווה הינה פלטפורמה מצויינת, הייתי רוצה לדבר על השפה עצמה. הזכרתי קודם שבהשוואה לג'אווה, C# הינה שפה חלשה יותר מבחינת תכונות. אבל ישנן שפות תכנות נוספות שניתן לכתוב בהן קוד שיתבצע על-גבי ה-JVM. ודוגמה טובה לשפה כזו (שעדיפה בתכונות שלה על C#) הינה Scala.
Scala הינה שפה עם טיפוסים סטטיים (static typed), מונחיית עצמים ומתאימה לתיכנות פונקציונלי. אני לא ארחיב ואפרט את כל יתרונות השפה כאן, אבל אחזור ואומר שהיא עדיפה מבחינות רבות מ-Java וגם מ-C#. כמובן ש-Scala אינה האפשרות היחידה. ניתן לכתוב גם ב-Clojure, JRuby, Groovy ועוד… ולפיכך ניתן לקבל את יתרונות פלטפורמת הג'אווה יחד עם שפת פיתוח חזקה בעלת יכולות המתאימות לאתגרים התיכנותיים הקיימים היום.
הפוסט בחסות ג'ון ברייס – מכללת היי-טק
ג'ון ברייס – מכללת היי-טק מקבוצת matrix הינה חברת ההדרכה המובילה בישראל ומהמובילות באירופה בתחום הדרכת המחשוב וטכנולוגיית המידע והאלקטרוניקה ובתחום הדרכת מיומנות הניהול, השירות והמכירות. לחברה ניסיון עשיר בהכשרת מתכנתים לשוק ה-Java, אך מעבר להסבות הרבות מועברים גם קורסים מקצועיים למגזר עסקי ולארגונים גדולים וקטנים. צוות המרצים הינו צוות מיומן ובקיא הן בהכשרות תלמידים והן בפן הטכנולוגי העדכני ביותר בתחום הפיתוח בשפת JAVA בתעשייה. ג'ון ברייס מכללת הי-טק מציעה קורסי JAVA שתואמים את צרכי שוק העבודה בתחום, כאשר המובילים מבינם הם:
- Java Programming – בקורס זה נלמד לפתח אפליקציות בתכנות מונחה עצמים בשפת Java הפופולארית.
- JavaEE 6 – קורס זה סוקר את הסטנדרטים המובילים של גרסאת JavaEE החדשה כגון: EJB, Web, JPA.
- Spring 3 – בקורס זה מלמד על ספריית הקוד Spring שהינה מאוד נפוצה ומאפשרת פיתוח מהיר במגוון תחומים ב-Java.
- Scala Programming — בקורס זה נלמד לפתח בשפת ה-Scala שהינה תחליף טוב הרבה יותר מ-Java ומאפשרת פיתוח מהיר יותר עם כמות קוד משמעותית קטנה יותר.
- Hibernate – קורס זה מציג איך לכתוב קוד מונחה-עצמים העובד מול מסד נתונים רלציוני באמצעות ספריית Hibernate הנפוצה.
הרשמה בחודשי דצמבר- ינואר לאחד מהקורסים הנבחרים תזכה אותך, גולש ניוזגיק, ב-10% הנחה.
הגב
41 תגובות על "10 סיבות מדוע ג'אווה עדיפה על NET."
* היי, אנחנו אוהבים תגובות!
תיקונים, תגובות קוטלות וכמובן תגובות מפרגנות - בכיף.
חופש הביטוי הוא ערך עליון, אבל לא נוכל להשלים עם תגובות שכוללות הסתה, הוצאת דיבה, תגובות שכוללות מידע המפר את תנאי השימוש של Geektime, תגובות שחורגות מהטעם הטוב ותגובות שהן בניגוד לדין. תגובות כאלו יימחקו מייד.
לגבי הטיעון ה 2: אולי פלטפורמות קוד פתוח זה נכון, אבל יש למייקרוספוט את כל התחליפים, למשל ל DI יש את Unity / MEF ועוד פתרונות. יש את ENTITY וכו'..
ממש לא נכון שג'אווה מספקת ביצועים טובים יותר. חוץ מזה למה לקנות שרת אפליקציה מ IBM? יש IIS מובנה בכל שרת ווינדוס
הפוסט הבא צריך להיות "100 סיבות למה #C ו Net. טובות יותר מ Java"
כל הפוסט אני חושב לעצמי .. "מה זה הטיעוני סרק האלה" .. מזל שכתבת את זה בבלוג ככה שלא נוח לשלול אותך בכל סעיף וסעיף. הכי אהבתי את סעיף 6 שבעצם אומר "תאמינו לי.. זה יותר מהיר ואין לי איך לפרט או להסביר".רק בסוף שראיתי את הקטע שמספר ע"י מי הפוסט נכתב הבנתי למה המילים האלה בכלל מופיעות פה.
מהיר יותר בעיקר בגלל היכולת לרוץ על מערכות UNIX שנותנות ביצועים טובים יותר.
בכלל .NET זוכה לפופולריות גבוהה בארץ בעיקר בגלל הצבא וסניף מייקרוסופט, ברוב העולם אין בכלל תחרות וג'אווה לוקחת בענק. באירופה למשל לא נוגעים ב .NET
אני מציע לכל חובבי מייקרוסופט לצאת מהסרט שהם חיים בו.
הסכנה לג'אווה נשקפת אם כבר מכיוון של ROR
מסכים עם הכל חוץ מהקטע של ROR שלא היה קשור.
Max Brin באמת ? אני מציע שתבדוק על מה רצים כל האתרים הגדולים בעולם. רמז – לא windows
אם ביצועים לא מעניינים אותך אתה יכול לעבוד ב windows ו /net.
אבל הטענה של הפוסט נכונה.
הפוסט הזה הוא חרטה מארץ החרטות, אין פה טיעון אחד ויחיד שהוא אמת מוצקה. הסיבה היחידה שהפוסט קיים היא כי ג'ון ברייס היו חייבים מלל כלשהו לצד הפרסומת.
חרטה מארץ החרטות, לא יכולתי לתאר את זה טוב יותר
לא כתבתם את החסרון הכי גדול של ג'אווה – אי אפשר לבנות UI שהוא באמת טוב ונראה מליון דולר (זה בגלל שהיא cross platform).
בלי זה לא ממש כיף לכתוב אפליקציות מצד הלקוח בג'אווה ובגלל זה היא לא ממריאה.
כיום אף אחד כמעט לא רוצה לבנות ממשק משתמש שהוא לא web
לכן הטיעון הזה לא רלוונטי.
בין כה רוב טכנולוגיות ה UI בעולם ה web מתבססות על ספריות JS שבהן אפשר להשתמש בשתי הפלטפורמות.
:-)
כנראה שכל אחד רואה את העולם שלו.
אני מפתח למובייל עם ג'אווה (אגב, גם לאייפון – דרך codenameone)
העניין הוא שהכלים שנעשו בעולם הג'אווה להגיע ל UI מעולה עדיין לא מספיק טובים.
אפילו סביבות פיתוח שנכתבו בג'אווה לא נראות טוב.
Ram Nathaniel אם יש לך טענות לממשק של אנדרויד זה כבר סיפור אחר שלא קשור לג'אווה. לגבי איייפון באמת הפיתוח לא נועד שם לג'אווה.
לגבי סביבות פיתוח בג'אווה – לא מסכים איתך, מה גם שאתה מקבל איתם את ה cross platform שאין לך עם סביבת פיתוח של מייקרוסופט.
מה שאמרתי זה שלא מפתחים היום הרבה אפליקציות desktop
הפוסט הכי מיותר ומטופש שראיתי מאז ומעולם. לפחות לא טרחתם להסתיר שזה פרסומת, אחרת אנשים עוד היו מאמינים לשטויות שנכתבו בו.
http://blog.xamarin.com/2012/05/01/android-in-c-sharp/
מכל מה שראיתי שרשמתם פה שכחתם משהו אחד חשוב: IDE.
Eclipse לא עולה שקל לעומת VS שעולה ימבה כסף, למוצר אחד. (יש אלטרנטיביות ל- VS אבל אם אתם חברה רצינית אז אתם תפתחו בה).
כאשר אתה חברה גדולה/בינונית אתה לוקח בחשבון את זה.
על כן הרבה חברות מעדיפות JAVA.
אגב לגבי הפוסט, לא שוכנעתי ש- JAVA עדיף על .NET, כי הטיעונים היו חסרי "בשר". רשמת את ההיתרונות של java ובאתה מידה הייתי יכול לרשום את ההיתרונות של .Net
בנוסף לכל הטיעונים המוצדקים שלכם, חייבים לומר כל הכבוד לניוזגיק.
הם לא מצנזרים את התגובות, למרות שהן פוגעות בנותן חסות שלהם.
הסיבה העיקרית והכי חשובה להעדיף את java על פני net. הינה שמחר יחליט איזה מנהל במיקריסופט ש net . לא רווחית להם מספיק אז מחרתיים מיקרוסופט יגרטו אותה (תמיד יהיו כאילו שיתלהבו מהבולשיט שמיקרוסופט תאכיל אותנו למה הם גרטו את זה ).
מיקרוסופט עשתה את זה עשרות פעמים כשהפעם הגדולה מכולם היתה עם silverlight .
מבחינה טכנולוגית כל סביבה והחוזק שלה אי אפשר להשוות את החוזק והנכונות של spring לזו של mef
מצד שני visual studio כסביבת פיתוח עדיפה בהרבה על eclipse לעניות דעתי .
אני לא בטוח ש – Java היא אם ככה בחירה נכונה. Java אמנם היא קוד פתוח, אבל אסור לשנות אותה. בדיוק על זה התנהל קרב הפטנטים בין אורקל לגוגל על אנדרואיד.
כמה #C השתנה בשנים האחרונות הוסיפו לה async ו await כאשר לא בדיוק היה חסר api לטפל בmultythreading .גם java משתנה עם השנים .הוסיפו לה אפשרות של lambda expresion וכד .
בכל מקרה נראה לי שמדובר יותר על הטכנולוגיות מסביב כדוגמת wcf מול jms .
maven מול nuget כל סביבה והחוזק שלה
Silverlight עדיין בשימוש בWindows Phone. זה שאף-אחד לא פראייר מספיק בשביל לכתוב בשבילה לWeb – זה סיפור אחר.
Silverlight עדיין בשימוש בWindows Phone. זה שאף-אחד לא פראייר מספיק בשביל לכתוב בשבילה לWeb – זה סיפור אחר.
הסיבה העיקרית והכי חשובה להעדיף את java על פני net. הינה שמחר יחליט איזה מנהל במיקריסופט ש net . לא רווחית להם מספיק אז מחרתיים מיקרוסופט יגרטו אותה (תמיד יהיו כאילו שיתלהבו מהבולשיט שמיקרוסופט תאכיל אותנו למה הם גרטו את זה ).
מיקרוסופט עשתה את זה עשרות פעמים כשהפעם הגדולה מכולם היתה עם silverlight .
מבחינה טכנולוגית כל סביבה והחוזק שלה אי אפשר להשוות את החוזק והנכונות של spring לזו של mef
מצד שני visual studio כסביבת פיתוח עדיפה בהרבה על eclipse לעניות דעתי .
#פוסטים משנות ה-90….
באמת, כאילו זה מה שמעניין אותכם? ג'אווה או דוטנט?!
התנסיתי בפיתוח של שלושת הסביבות, ג'אווה מנצחת בגדול עבורי, פשוט בגלל שהיא בדיוק באמצע (נוחות, קרוס פלטפורם, תמיכה מסחרית והמון קוד קיים). בקשר לביצועים הכל תלוי בהכרות עם הסביבה, קצת הבנה של אופטימזציות של JIT יתנו האצה משמעותית לקוד
JAVA או .NET .. תלוי תלוי תלוי! בסביבת WEB אין ספק שיש המון פתרונות פנטסטים ל .NET אבל כשאנחנו עובדים ל SERVER ובמיוחד ב- BACKEND… זה כבר עולם אחר ואין משהו מספיק חזקמתקדםיציב כמו JAVA בתחום זה.
הטכנולוגיה של הבקאנד זה בקושי 10% ממה שחשוב בשביל אפליקצית ווב. אם המהירות של הבקאנד שלך זה מה שמשנה לך – אתה עושה את זה לא נכון.
Azure > Java , lambda expression > java
Azure wins!
lambda expression wins!
ואהבתי את הקטע של פרסום קורס של גאווה מייד בסוף הכתבה
תנסה HASKELL. שפה חזקה מאוד. לא מתאימה לכל אחד – מצריך ידע בתכנות פונקציונאלי (אם אתה מכיר)
תנסה HASKELL. שפה חזקה מאוד. לא מתאימה לכל אחד – מצריך ידע בתכנות פונקציונאלי (אם אתה מכיר)
כתבת קשקוש
רגע, אני צריך לבדוק ביומן.. אנחנו ב-2013?!, כי ה"מאמר" הזה כל-כך 2002… פעם אנשים היו מתפרנסים מההשוואות בין ג'אווה ו-NET., אפילו אני חטאתי בזה :)
רגע, אני צריך לבדוק ביומן.. אנחנו ב-2013?!, כי ה"מאמר" הזה כל-כך 2002… פעם אנשים היו מתפרנסים מההשוואות בין ג'אווה ו-NET., אפילו אני חטאתי בזה :)
דורון, לא הבנתי. להצביע ג'אווה או NET?
כדאי שקודם כל יסבירו בג'ון ברייס למה המודל הלימודי שלהם קורס:
http://bitly.com/15uVj5U