בחירת ה- IDE של Java שלך

עודכן: דצמבר 2018 .

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

שלושת ה- IDE שנבחרו לרוב לפיתוח Java בצד השרת הם IntelliJ IDEA, Eclipse ו- NetBeans. אלה לא הבחירות היחידות, עם זאת, וסקירה זו תכלול גם כמה מזהי IDE קלים.

לצורך סיכום זה, ביצעתי התקנות חדשות של IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018-09 עבור מפתחי Java EE ו- Apache NetBeans (הדגירה) IDE 9 ב- Mac. בדקתי גם כמה פרויקטים של קוד פתוח של Java כדי שאוכל לבדוק את כל ה- IDE באותם פרויקטים.

על עדכון זה

סקירת IDE זו פורסמה לראשונה בספטמבר 2016 והיא עודכנה בדצמבר 2018. באותן שנים שהתפתחו שפת Java, ממשקי ה- API, המערכת האקולוגית JVM ומסגרות מסוימות התפתחו באופן משמעותי. Java EE 8 הציגה או עדכנה מפרטי טכנולוגיית Java רבים, כולל JSON-B (JavaScript Object Notation Binding), Java EE Security, Servlet 4.0 ו- JSF (JavaServer Faces) 2.3 לבניית ממשקי משתמש בצד השרת. Java EE 8 היה גם המהדורה הסופית של ארגוני ג'אווה מבית אורקל: קרן Eclipse לקחה על עצמה את ניהול הטכנולוגיה, שהיא מיתגה מחדש לג'קרטה EE. בינתיים, JUnit התקדמה לגרסה 5, ושברה אינטגרציות; ל- IDEA ו- Eclipse יש תמיכה מקורית ב- JUnit 5, אך נכון לכתיבת שורות אלה NetBeans לא.

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

NetBeans 10 מוסיפה תמיכה ב- JUnit 5 ו- JDK 11

NetBeans 10 שוחרר בינואר 2019 ומוסיף תמיכה ב- JDK 11 וב- JUnit 5.

יסודות: מה שאתה צריך מ- Java IDE

לכל הפחות, היית מקווה שה- IDE שלך תומך ב- Java 8 ו / או 11 (גרסאות ה- LTS), Scala, Groovy, Kotlin ובכל שפות JVM אחרות בהן אתה משתמש באופן קבוע. אתה גם רוצה שזה יתמוך בשרתי היישומים העיקריים ובמסגרות האינטרנט הפופולריות ביותר, כולל Spring MVC, JSF, Struts, GWT, Play, Grails ו- Vaadin. ה- IDE שלך צריך להיות תואם לכל מערכות הבנייה והבקרת הגרסאות שצוות הפיתוח שלך משתמש בהן; דוגמאות לכך כוללות Apache Ant with Ivy, Maven, and Gradle, יחד עם Git, SVN, CVS, Mercurial ו- Bazaar. לקבלת אשראי נוסף, ה- IDE שלך אמור להיות מסוגל לטפל בשכבות הלקוח ובסיסי הנתונים של המחסנית שלך, ותומך ב- JavaScript מוטבע, TypeScript, HTML, SQL, דפי JavaServer, מצב שינה ו- API של Persistence Java.

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

בהתחשב בבסיס זה, הבה נבחן את המתמודדים.

רעיון IntelliJ

IntelliJ IDEA, Java IDE המובילה מבחינת התכונות והמחיר, מגיעה בשתי מהדורות: המהדורה הקהילתית החינמית ומהדורת Ultimate בתשלום, הכוללת תכונות נוספות.

המהדורה הקהילתית מיועדת לפיתוח JVM ואנדרואיד. הוא תומך בג'אווה, קוטלין, גרובי וסקאלה; דְמוּי אָדָם; Maven, Gradle ו- SBT; ו- Git, SVN, Mercurial, CVS ו- TFS.

המהדורה האולטימטיבית, המיועדת לפיתוח אתרים וארגונים, תומכת ב- Perforce בנוסף למערכות בקרת הגרסאות האחרות; תומך ב- JavaScript וב- TypeScript; תומך ב- Java EE, Spring, GWT, Vaadin, Play, Grails, ומסגרות אחרות; וכולל כלי בסיס נתונים ותמיכה ב- SQL.

הרעיון הוא שהמהדורה המסחרית (האולטימטיבית) תזכה את מקומה על שולחן העבודה של איש מקצוע, ותצדיק מנוי בתשלום באמצעות תפוקת מתכנתים מוגברת. אם אתה מרוויח 50 - 100 אלף דולר לשנה כמפתח Java, אין צורך בהגברת הפרודוקטיביות הרבה כדי להעניק לך החזר השקעה מהיר במינוי IDEA עסקי של 500 דולר לשנה. המחיר יורד בשנים שלאחר מכן עבור עסקים, הוא נמוך בהרבה עבור חברות סטארט-אפ ואנשים פרטיים, והוא ללא תשלום עבור תלמידים, מורים, "אלופי ג'אווה" ומפתחי קוד פתוח.

IntelliJ מציגה את IDEA לתובנות מעמיקות בקוד שלך, ארגונומיה למפתחים, כלי מפתח מובנים וחווית תכנות של מצולעים. בואו נבדוק ונראה מה המשמעות של תכונות אלה וכיצד הן יכולות לעזור לכם.

מרטין הלר

תובנה מעמיקה בקוד שלך

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

קוד Java מכיל לעיתים קרובות שפות אחרות כמחרוזות. IDEA יכול להזריק קטעי SQL, XPath, HTML, CSS ו / או קוד JavaScript אל מילולי Java String. לצורך העניין, הוא יכול לשקף קוד על פני מספר שפות; לדוגמא, אם תשנה שם למחלקה בהצהרת JPA, IDEA יעדכן את מחלקת הישויות המתאימות ואת ביטויי JPA.

כשאתה משנה מחדש קטע קוד, אחד הדברים שאתה בדרך כלל רוצה לעשות הוא גם לשחזר את כל הכפילויות של הקוד הזה. IDEA Ultimate יכול לזהות כפילויות וקטעים דומים ולהחיל עליהם גם את הרפקטורציה.

IntelliJ IDEA מנתח את הקוד שלך כאשר הוא נטען, וכאשר אתה מקליד. הוא מציע בדיקות כדי להצביע על בעיות אפשריות, ואם תרצה בכך, רשימה של תיקונים מהירים לבעיה שזוהתה.

ארגונומיה למפתחים

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

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

כלי מפתח מובנים

IntelliJ IDEA מספק ממשק מאוחד לרוב מערכות בקרת הגרסאות הגדולות, כולל Git, SVN, Mercurial, CVS, Perforce ו- TFS. אתה יכול לעשות את כל ניהול השינויים שלך ממש ב- IDE. כשבדקתי את IDEA, רציתי שהשינוי האחרון בבלוק קוד המקור יופיע בחלון העורך כהערה (כמו שקורה ב- Visual Studio). כפי שמתברר, יש תוסף לכך.

IDEA משלב גם כלי בנייה, רצי בדיקה וכלי כיסוי, כמו גם חלון מסוף מובנה. ל- IntelliJ אין פרופיל משלה, אבל הוא תומך בכמה פרופילי צד שלישי באמצעות תוספים. אלה כוללים את YourKit, שנוצר על ידי מפתח מוביל של IntelliJ לשעבר, ו- VisualVM, המהווה גרסה ארוזה מחדש של פרופיל NetBeans.

ניפוי באגים ב- Java יכול להיות כאב כאשר דברים מסתוריים מתרחשים בשיעורים שאין לכם קוד מקור. IDEA מגיע עם מפענח למקרים אלה.

תכנות שרתים של Java כרוך לעיתים קרובות בעבודה עם מסדי נתונים, כך ש- IDEA Ultimate כולל כלי מסדי נתונים של SQL ו- NoSQL. אם אתה זקוק ליותר, SQL IDE ייעודי (DataGrip) זמין כחלק ממנוי לכל המוצרים שזה רק קצת יותר יקר ממנוי IDEA Ultimate.

IntelliJ IDEA תומך בכל שרתי היישומים העיקריים של JVM, ויכול לפרוס לשרתים ולפתור אותם באגים ולתקן נקודת כאב עיקרית עבור מפתחי Java Java. IDEA תומך גם ב- Docker באמצעות תוסף שמוסיף חלון כלי Docker. (אם כבר מדברים על תוספים, ל- IntelliJ יש הרבה כאלה).

תכנות פוליגלוט

IDEA הרחיבה את סיוע הקידוד למסגרות Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS ועוד. לא כל אלה הם מסגרות ג'אווה. בנוסף ל- Java, IDEA מבינה שפות רבות אחרות מחוץ לקופסה, כולל Groovy, Kotlin, Scala, JavaScript, TypeScript ו- SQL. אם אתה זקוק ליותר, יש כיום מאות תוספים לשפה של IntelliJ, כולל תוספים עבור R, Elm, Go, Rust ו- D.

ליקוי חמה

Eclipse, זמן רב הפופולרי ביותר ב- Java IDE, הוא קוד פתוח וכתוב בעיקר בג'אווה, אם כי ארכיטקטורת התוספים שלו מאפשרת להרחיב את Eclipse בשפות אחרות. מקורו של Eclipse בשנת 2001 כפרויקט של IBM להחלפת משפחת ה- IDE של IBM מבוססת Smalltalk על ידי IDE עם IDE נייד מבוסס Java. מטרת הפרויקט הייתה ליקוי חשיפה של Microsoft Visual Studio ומכאן השם.

הניידות של Java מסייעת ל- Eclipse להיות חוצה פלטפורמות: Eclipse פועל על לינוקס, Mac OS X, Solaris ו- Windows. ערכת הכלים הסטנדרטית של Java (SWT) אחראית לפחות חלקית למראה ולתחושה של Eclipse, לטוב ולרע. כמו כן, Eclipse חייבת את ביצועיה (או, יש אומרים, חוסר בה) ל- JVM. ל- Eclipse יש מוניטין של ריצה איטית, מה שמשתמש בחומרה ישנה יותר וב- JVM ישן יותר. גם היום זה יכול להרגיש איטי, עם זאת, במיוחד כאשר הוא מעדכן את עצמו ברקע עם תוספים רבים המותקנים.

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

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

הגרסה הנוכחית של Eclipse היא 2018-2009. התקנתי את Eclipse IDE עבור מפתחי Java EE, אך ישנן חבילות התקנה רבות אחרות, כולל אפשרות להתקין את ה- Eclipse SDK המינימלי ולהוסיף תוספים רק לפי הצורך. האפשרות האחרונה היא לא לבעלי לב חלש: עם זאת: לא קשה להציג קונפליקטים בין תוספים שלא ממש  אמרו  שהם לא תואמים.

מרטין הלר

תמיכה בכלים הניתנים להרחבה

המערכת האקולוגית של התוספים היא אחת מנקודות החוזק של Eclipse, כמו גם מהווה מקור לתסכול מדי פעם. שוק Eclipse מכיל כיום מעל 1,600 פתרונות, ותוספים שתרמו לקהילה עשויים לעבוד או לא לעבוד כפי שפורסם. ובכל זאת, תוספי Eclipse כוללים תמיכה בלמעלה ממאה שפות תכנות וכמעט 200 מסגרות לפיתוח אפליקציות.

רוב שרתי Java נתמכים גם: אם תגדיר חיבור שרת חדש מ- Eclipse, תגיע לרשימת תיקיות ספקים, שמתחתיה תמצא כ -30 שרתי יישומים, כולל תשע גרסאות של Apache Tomcat. הספקים המסחריים נוטים לגבש את הצעותיהם ביחד: לדוגמה, יש רק פריט אחד תחת Red Hat JBoss Middleware, שכולל WildFly ו- EAP Server Tools, כמו גם JBoss AS.

עריכה, גלישה, רפקטורציה, וניקוי באגים

ההתנסות הראשונה של מפתח עם אקליפס יכולה להיות מטרידה, אפילו מבלבלת. הסיבה לכך היא שהמשימה הראשונה שלך היא להסתגל לארכיטקטורה הרעיונית של Eclipse של סביבות עבודה, נקודות מבט ותצוגות, שתפקידיה נקבעים על ידי אילו תוספים שהתקנת. למשל, לפיתוח שרתים של Java, סביר להניח שתשתמש בפרספקטיבות הגלישה של Java, Java EE ו- Java; תצוגת סייר החבילות; נקודת המבט לאיתור באגים; נקודת מבט של סנכרון צוות; כלי רשת; נקודת מבט לפיתוח מסד נתונים; ונקודת מבט לאיתור באגים. בפועל, כל אלה יתחילו להיות הגיוניים ברגע שתפתח את הדעות שאתה צריך.

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

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