100%
כל המאמרים ←

Java: OpenJDK, תוכנה חופשית ושירותים מאובטחים

מאמר נפרד על סביבת Java, בחירת סביבת ריצה, תחזוקת יישומים והפעלה עצמאית.

English
איור מקורי בהשראת כוס Java בתוך סביבת שרתים ורכיבי JVM.
איור וקטורי מקורי; שמות הפרויקטים מציינים את נושא המאמר ואינם מעידים על חסות.

שפה וסביבת ריצה

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

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

OpenJDK וחופש תוכנה

OpenJDK מספק מימוש בקוד פתוח של פלטפורמת Java. הקוד הרלוונטי מופץ ב־GPLv2 עם חריג Classpath. החריג מאפשר קישור מודולים עצמאיים בתנאים שלהם; הוא אינו הופך כל יישום Java לתוכנה חופשית. יש לבדוק גם את הרישוי של היישום ושל הספריות שהוא דורש.

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

מה JVM נותנת ומה נשאר באחריות היישום

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

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

ספריות הן חלק מהמערכת

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

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

אבטחה מתחילה בסמכות מוגבלת

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

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

עדכון, משאבים ושחזור

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

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

מקום ברשת עצמאית

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