שאלה ב java

etyma

New member
../images/Emo35.gif ../images/Emo35.gif ../images/Emo35.gif שאלה ב java

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

אלדד28

New member
לא הקוד הוא שנטען למחשב,

אלא ה-bytecode שמאפשר את ההרצה של ה-applet. זה לא קוד. זה איזשהו תוצר ביניים של קומפילציה.
 

etyma

New member
תודה אלדד - ובכל זאת

האם ישנה איזשהיא דרך לפתוח את הקבצים האלו למשהו קריא ?
 
עם סייג (נדמה לי):../images/Emo26.gif

אני לא כל-כך מבין בתחום, אבל נראה לי שיש בעיה עם ההגדרה של: "אתר שכתוב ב-java"... אם אתה מדבר על applets אז אכן מה שאלדד כתב נכון. לעומת זאת אם אתה כותב אתר ב-java שמייצר דפי HTML (נדמה לי שהמונח הכללי לקוד שרץ בשרת הוא servlet והמונח שמדבר על יצירת עמודי HTML הוא JSP) - אז שום קוד או bytecode של java לא נטען אצל הלקוח. קוד ה-java רץ בשרת ומייצר דף HTML פשוט (וזה מה שמגיע ללקוח).
 

stac

New member
jsp זה נחמד...

וservlet גם מאוד מאוד נחמד... ובגלל שזה נחמד יש פקרויקט שמנסה לעתיק תכונות כאלו לPHP http://phplet.sourceforge.net
 

stac

New member
כן אפשר...

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

אלדד28

New member
גם אסמבלי מאוד מאוד מוגדר ומתועד

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

voguemaster

New member
יש גם יש

דיקומפיילר מושלם לג'אווה. אם הקוד לא קומפל עם obfuscation, הוא נותן שחזור מדויק לחלוטין של קוד המקור (ללא comments כמובן
). נדמה לי שקוראים לו DJ decompiler.
 

voguemaster

New member
כמעט

כי אפשר קצת לבלבל את השמות של פונק' ומשתנים ע"י ה-obfuscation אבל עד כמה שידוע לי לא ממש משתמשים בזה בד"כ. לפחות אני לא ראיתי. אז בעיקרון, כן
 

erezsh

New member
אבל האופטימיזציה לא מפריעה?

או שב-Java אין כזו?
(אני דווקא אאמין לזה)
 

voguemaster

New member
על איזו אופטימיזציה אתה מדבר ??

אופטימיזציה של ה-bytecode ?? אני לא מבין גדול בנושא אבל עד כמה שידוע לי זה מאוד תלוי בסוג של האופטימיזציה.
 

voguemaster

New member
ספציפית לגבי JIT

מה שה-JIT עושה הוא להמיר חלק מהקוד ל-native במקום (לכן קוראים לו Just in time compiler) ולכן ה-bytecode המקורי הוא אותו bytecode ואפשר להפוך אותו חזרה לקוד.
 

yaishb

New member
אם כך...

מה ההצדקה של java בתעשייה (למעט זמן פיתוח מהיר)? ברק.
 

voguemaster

New member
יש הרבה הצדקה

ראשית, appletים הם דברים נורא שימושיים באתרים שונים ומשונים. שנית, ג'אווה מסתדרת היטב עם הרשת. טכנולוגיות של J2EE לא רק שפשוטות לשימוש אלא גם קלות לכתיבה וזה יתרון משמעותי. כשאתה חושב על זה באופן רציונלי בד"כ הרשת איטית יותר בצורה משמעותית אפילו מקוד ג'אווה שרץ ב-JVM אז בד"כ אין בעיה של ביצועים. (אני מסכים שבמקומות מסוימים יש ואפילו שמעתי על כאלה..) אם בד"כ אין בעיה של ביצועים אז למה לא ליהנות מזמן פיתוח טוב בהרבה וקלות כתיבה ? עד כמה שאני לא אוהב את המנגנונים של ג'אווה שמאיטים אותה, אין מה לעשות ש-GC לדוגמא זה דבר מעולה במצבים מסוימים. השילוב שלו עם המצביעים החכמים של ג'אווה (להלן רפרנסים של ג'אווה) הוא פשוט מוצלח. דוגמא לזה היא containers ואובייקטים. הרבה יותר קל לכתיבה, שימוש ודיבוג מאשר ב ++C. יש לך מושג איזה כאב ראש זה לעבוד עם אובייקטים ו/או מצביעים לאובייקטים עם STL containers ?? פשוט שפה נוחה וחכמה, זה הכל. אפשר לעשות איתה כל דבר שלא דורש ביצועים קריטיים בפחות זמן.
 

voguemaster

New member
וד"א

לא כל קוד ג'אווה אפשר להוציא מהשרת (כלומר לא את כל ה-CLASSים). זה מאוד תלוי. ב-appletים זה כמובן ברור שאפשר, אין פה ויכוח בכלל
 

yaishb

New member
כמובן,

אבל הלקוח שלו אתה מוכר את האפליקציה (server side) עדיין עלול לחשוף את הקוד, אלא אם כן ערבלת (וכמו שציינת, בדר"כ לא מערבלים). ברק.
 

voguemaster

New member
כן אין ספק

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