100 הספריות המובילות בג’אווה, רובי ו-JS על בסיס ניתוח ב-GitHub

ניתחנו 30 אלף פרויקטים ב-GitHub ואלה 100 הספריות המובילות בג’אווה, רובי וג’אווה-סקריפט שאיתרנו.

java folders

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

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

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

לצורך הבדיקה בחרנו ב-3 שפות התכנות הבולטות בגיטהאב – ג’אווה, רובי וג’אווה-סקריפט. בכל שפה ניתחנו 10,000 פרויקטים, עם הטיה לטובת פרויקטים אשר סומנו כ”מועדפים” על ידי מפתחים רבים באתר.

עם 10,000 פרויקטים ביד עבור כל אחת מהשפות, המשכנו לשלב הבא: עבור כל שפה דירגנו את 100 הספריות הנפוצות ביותר, על סמך מספר המשתמשים בכל ספריה. במקביל, כדי לקבל תמונה רחבה יותר של המגמות בשפות השונות, חילקנו את הספריות לקטגוריות רחבות יותר (בדיקות, DB, UI וכו’), וערכנו דירוג נפרד של הקטגוריות הפופולריות. מעניין מאוד לראות כיצד הבולטות של כל קטגוריה משתנה בהתאם לשפה.

הנה כמה מסקנות מעניינות שהעלתה הבדיקה (את הרשימה המלאה תוכלו למצוא בסוף הפוסט):

Java

Java

עונת ה-Guava כבר כאן, או: גוגל במיינסטרים. ספריות Spring ו-Apache נפוצות כל כך בג’אווה, שהן כבר הפכו הלכה למעשה לחלק מהשפה. שתי הספריות חולשות על יותר מ-25% מהפרויקטים במאייה הראשונה, בחלוקה כמעט שווה. נתון מפתיע למדי הוא הנוכחות הלא מבוטלת של ספריות מבית גוגל, כמו GWT ו-Guava, במאייה הראשונה, עם נתח של 7%. מסתמן שנוסף עוד תחום לחיינו שבו לגוגל יש דריסת רגל משמעותית.

ביג דאטה – Hadoop מקיימת את ההבטחה. עיבוד מידע תופס חלק גדול מהעבודה בג’אווה, כש-16 ספריות מתוך ה-100 המובילות מתמקדות בניהול מאגרי מידע, בהשוואה ל-12 ספריות ברובי ו-5 בלבד בג’אווה-סקריפט (האחרונה עוסקת עדיין בפיתוח לצד הלקוח, למרות הגידול והעניין הרב בשרתים מבוססי ג’אווה-סקריפט כגון Node.js).

מעניין לראות ש-Hadoop מקיים את הציפיות הגבוהות שתלו בו, עם 168 פרויקטים העושים בו שימוש. לשם השוואה, ב-MySql, אחד מבסיסי הנתונים הנפוצים ביותר, נרשמו כ-225 פרויקטים העושים בו שימוש. לבסיס הנתונים PostgreSQL נרשמו כ-121 פרוייקטים שעשו בו שימוש.

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

TDD – Test driven development תופס נתח משמעותי בג’אווה וברובי (אך עדיין לא בג’אווה-סקריפט) – בכל שלוש השפות אפשר לראות שבדיקות משחקות תפקיד משמעותי מאוד. בג’אווה וברובי כ-40-50% מהפרויקטים שנבחנו משתמשים בתשתיות תוכנה לבדיקות אוטומטיות. המובילות הן JUnit בג’אווה ו-RSpec ברובי. לעומת האחוז הגבוה של שימוש בשתי השפות הללו, בג’אווה-סקריפט שיעור הפרויקטים שמשתמשים בסביבות בדיקה נמוך יותר, ועומד על כ-25%.

Mocking, שיטה לסימולציה של אובייקטי העולם האמיתי בשלבי בדיקות ופיתוח, רושמת גם היא פופולריות לא מבוטלת, והיא נמצאת בשימוש ב-10% מהפרויקטים בג’אווה, וב-7% מהפרויקטים ברובי. בג’אווה-סקריפט, לעומת זאת, עוד לא נראה שימוש נרחב בשיטה הזו לפיתוח אפליקציות.

Ruby

Ruby

SQL עדיין שולט בעולם בסיסי הנתונים – מאגרי NoSQL אמנם נחשבים לצעקה האחרונה בתחום הדאטה, אך בסיסי נתונים רלציוניים עדיין שולטים בעולם הרובי – Sqlite, PostgreAQL, MySql נמצאים בשימוש ב-25% מהפרויקטים, לעומת 3% בלבד מהפרויקטים עבור Redis ו-Mongo.

עם זאת, MongoDB מציג רמה גבוהה של פופולריות בעולם הרובי, עם 185 פרויקטים שמשתמשים בו (כפול ממספר הפרויקטים בג’אווה).

בתחום פיתוח הווב אפשר לראות שלמרות הפריצה של תשתיות חדשות בשנים האחרונות (כמו Sinatra, שנכנס לדירוג עם 570 פרויקטים), רובי עדיין נעה בעיקר סביב Rails, עם יותר מ-7,000 פרויקטים העושים שימוש בתשתית. עבור שרתי ווב , ב-Thin (עם 487 פרויקטים) נמצא שימוש גבוה פי 2 מאשר Unicorn.

נראה ש-CoffeeScript, שפת סקריפטינג חדשה המיתרגמת לג’אווה-סקריפט, מתקבלת בחיבוק חם על ידי קהילת הרובי, עם יותר מ-1,000 פרויקטים שעושים בה שימוש.

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

Javascript

Javascript

ג’אווה-סקריפט עוד לא מעוצבת. בעוד שהספריות המובילות בג’אווה חולשות על 30% מהפרויקטים, וברובי על כ-20% מהשפה, בג’אווה-סקריפט הנתון נמוך מ-10%. מכיוון שג’אווה-סקיפט גדלה ומתפתחת במהירות על מנת לתמוך במגוון הולך וגדל של סוגי אפליקציות, רבות מהאפשרויות החדשות עדיין לא “נספגו” לתוך השפה או לספריות הסטנדרטיות. כתוצאה מכך, כמות הספריות שנמצאות בשימוש במאייה הראשונה של ג’אווה-סקריפט גדולה ב-50% מאשר במאיות הראשונות של השפות המקבילות.

השימוש ב-Grunt עצום. תשתית האוטומציה Grunt משחקת תפקיד גדול מאוד בפיתוח בג’אווה-סקריפט (בייחוד עבור node.js), והיא נמצאת בשימוש ב-23% מתוך 100 הספריות המובילות. נראה ש-Grunt ממלאת את החלל במעגל ה-build, testing and deployment בג’אווה-סקריפט. תהליך זה מנוהל בשפות כמו ג’אווה באופן חיצוני לפרויקט עצמו, על ידי כלים אחרים כמו Maven או Jenkins.

תכנות לרשת עדיין מהווה בעיה רצינית. חלק גדול מספריות ג’אווה-סקריפט (7% מתוך המאייה הראשונה) מתמקדות בתקשורת לקוח/שרת. כמות זו גדולה פי 3 מאשר בג’אווה וברובי. סביר מאוד להניח כי הסיבה לכך היא הצורך של מפתחי ווב להתמודד עם אקו-סיסטם לא אחידה מאוד בצד הדפדפן מחד, אך בוסרית למדי בצד השרת מאידך. עבור פיתוח ווב בצד השרת – הפריימוורק express עבור node.js מוביל את הטבלה עם 631 רשומות.

מחפשים סדר. מבין השפות שנבדקו, בג’אווה-סקריפט נמצא המספר הגדול ביותר של הרחבות לשפה, עם 884 פרויקטים הנעזרים בהן. מעניין לראות כי בעוד ג’אווה-סקריפט היא שפה גמישה מאוד, קהילת המפתחים ממשיכה לחפש דרכים לעצב אותה ולהכניסה לתוך מבנים מסודרים יותר. כך, למשל, ל-Underscore.js, אשר מספק יכולות פיתוח פונקציונליות דומות לאלה שנמצאות בשפות המבניות יותר כמו Scala, נרשמו 416 פרויקטים העושים בו שימוש , דבר ההופך אותו לספריית הג’אווה-סקריפט החמישית בגודלה.

רוצים לראות את 100 הספריות המובילות בכל שפה? לחצו כאן.

הפוסט פורסם לראשונה באנגלית בבלוג של Takipi.

טל וייס

טל וייס הוא מצוות המייסדים והמנכ"ל של טקיפי (Takipi), סטארטאפ העוזר למתכנתים להבין מה גרם לשגיאות בקוד. אוהב אתגרים תכנותיים, באגים לא פתירים ותכנות low level. כשהוא לא עסוק בתכנות או בסטארטאפ הוא מנגן בתופים.

הגב

10 תגובות על "100 הספריות המובילות בג’אווה, רובי ו-JS על בסיס ניתוח ב-GitHub"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

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

סידור לפי:   חדש | ישן | הכי מדורגים
יהודה
Guest

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

מוטי
Guest

הכמיות שכתובות בכתבה על הפרוייקטים שמשתמשים במחלקות js לא נכונות.

פה אפשר לראות נתונים אמיתיים. לnodejs.
https://npmjs.org/browse/depended

גלעד - מפתח - "איש קשר זמני"
Guest
גלעד - מפתח - "איש קשר זמני"

משהו פה לא נכון במחקר!
ספריה כמו underscore נמצאת מעל jquery.
זה נראה לכם הגיוני?
אנליזה קצרה ב google trends מפריכה את ה “מחקר” בגדול:

http://www.google.com/trends/explore#q=javascript%20underscore%2C%20javascript%20jquery%2C%20javascript%20grunt&cmpt=q

ובג’אווה אותו דבר:
http://www.google.com/trends/explore#q=javascript%20underscore%2C%20javascript%20jquery%2C%20javascript%20grunt&cmpt=q

שלא לדבר על MYSQL שמכסח לכולם את הצורה.

aviv
Guest
מטרת הכתבה היא לקדם את חברת טקיפי ולא יותר מזה. בגלל זה גם איכות ואמינות הכתבה.. כל כך שקוף שהכתבות האלה זה חלק מאסטרטגיית ליצור מגע עם מפתחים אשר הם למעשה הלקוחות של המוצר שלהם. חשיבה יפה, ממש לא מקורית.. סתם בזבזתם כסף על “יועץ/מנטור” לשיווק. בחשיבה היפה הזאת, פספסתם פרט אחד קטנטן – מפתחים הם לא טיפשים וצריך קצת יותר מאמץ בשביל לשכנע אותנו שהמוצר שלכם טוב. יכול להיות שהוא טוב דרך אגב(לא בדקתי) אבל זה צורה בה אתם מנסים לדחוף אותו ממש מעצבנת. חבל גם שהמנהלים של גיקטיים מקפידים לשמור על “תמימות” הכתבות כי בסופו של דבר זה… Read more »
wade
Guest

מחפש מישהו לעזרה בעבודות בג’אווה וב JSP, ובכתיבת קוד
המייל שלי הוא
wade@baryt.net

תודה:)

aviv
Guest

נראה לי שאתה יותר צריך עזרה בהסבת הJSP לכל דבר שהוא לא JSP :)

wpDiscuz

תגיות לכתבה: