السلام عليكم
أنا عضو جديد في هذه المنصة، مشرف سابق في منتديات الفريق العربي للبرمجة و rédacteur أيضاً في Club des développeurs et IT Pro.
أعجبتني فكرة الموقع و أحببت أن أناقش معكم كيفية حماية ملف الـ jar إذا كان المشروع غير مفتوح المصدر.
تحياتي.
هذا قد ينفعك
الـ obfuscation تأثيرها محدود جداً، جربتها سابقاً مع ProGuard و هو الأفضل في هذا المجال، لكن كل ما يقوم به هو تغيير أسماء الكلاسات و الدوال و المتغيرات و الكود سورس يظل مرئياً عند عمل decompilation.
يُمكنك عمل obfuscation باستخدام ProGuard مثلا و فتح الجار بـ Java Decompiler، ستلاحظ أن الكود سورس يتم التقاطه بالكامل !
كيف تكون اللغة الثانية على مستوى العالم في البرمجة حالياً و غير قابلة للتشفير و الحماية ، أنا مبتدأ و مع ذلك غير مقتنع بمعظم الكلام إنها فضيحة بالنسبة Java في تشفير ال Source code ، هل هذا يعني أن معظم البرامج المكتوبة بالجافا سهلة الكسر ؟!
هل هذا يعني أن معظم البرامج المكتوبة بالجافا سهلة الكسر
نعم هذا صحيح، لكن لا توجد برامج كثيرة مكتوبة بالجافا موجهة لسطح المكتب، معظم برامج الجافا مستخدمة بكثرة في مجال الأعمال الكبيرة enterprise business مثل شركات اﻹتصالات. وهي تكون إما برامج ويب أو خدمات ويب، أو برامج خدمية services تعمل في المخدمات، أي لا يستطيع المستخدم العادي الوصول لها حتى يقوم بكسرها. وقليل منها ماهو موجه لسطح المكتب ليعمل في تلك المؤسسات.
لكن لا توجد برامج كثيرة مكتوبة بالجافا موجهة لسطح المكتب
غير صحيح إطلاقاً، JavaSE كُتبت بها مئات البرامج و سأعطيك بعض الأمثلة :
Eclipse : لا داعي لتعريفه، و هو مكتوب بـ SWT.
IntelliJ IDEA وهو برنامج تجاري عبارة عن بيئة تطوير متكاملة تمت كتابته من طرف شركة JetBrains و قد تمت برمجته باستخدام Swing.
jEdit : محرر نصوص مُوجه للمبرمجين، تمت كتابته بالكامل بالجافا و يعمل تحت الويندوز، لنكس و Mac OS.
EditiX : من أشهر الـ XML editors و يدعم DTD, XSLT, XSL-FO, XSD, RelaxNG.
GenealogyJ : برنامج متخصص في علم الأنساب و متوافق مع GEDCOM، يعمل في كافة أنظمة التشغيل.
Oracle SQL Developer : الكل يعرفه، و قد تمت كتابته بالجافا أيضاً.
أغلب البرامج الـ Modelisation بـ UML كُتبت بالجافا مثل : ArgoUML, AmaterasUML, Eclipse UML2 Tools, Topcased, UML Designer, Papyrus, Violet, Visual Paradigm for UML.
أيضاً، الكثير من الـ IDE كُتب الجافا مثل : NetBeans, Codenvy, JBuilder, JCreator, JDeveloper, Xcode, Geany و القائمة تطول ..
FreeMind : من أفضل البرامج التي تقوم برسم الخرائط الذهنية، تمت كتابته بالجافا بشكل كامل.
muCommander : من أفضل البرامج التي تقوم بتسيير الملفات، برنامج راقي جداً.
Vuze : عميل BitTorrent يمتاز بسهولة التعامل معه و الفعالية.
JDiskReport : برنامج متخصص في صيانة الكمبيتور و استخدامه سهل جداً.
VisualVM : أداة تسمح بقياس سرعة أداء و كفائة البرامج المكتوبة بالجافا قيد التشغيل.
Sweet Home 3D : يسمح بتخطيط عمارات ثلاثية البعد و قد كُتب بالجافا !
و القائمة طويلة جداً، لاحظ أنني لم أتحدث عن البرامج التي شاركت الجافا في كتابتها مع لغات أخرى مثل السي++ و البايثون و السي شارب، إلخ.
مثلا OpenOffice كُتب بالسي++ و الجافا و الـ NASA World Wind كُتبت بالجافا و السي شارب و ThinkFree Office كُتب بالأجاكس و الجافا و القائمة طويلة جداً ..
لم أتحدث أيضا عن برامج تسيير قواعد بيانات NoSQL و التي أغلبها كُتب بالحافا مثل Cassandra الذي كانت تستخدمه شركة الـ Facebook قبل أن تتخلى عنه صالح شركة Apache و هناك أيضاً Voldemort و Habse و Neo4j و OrientDB و InfiniteGraph.
لهذا قلتُ لك يا أخي الفاضل أنك تتحدث للأسف عن أشياء لا تعرفها مع احترامي الشديد لك :)
هذه ليست قائمة طويلة. البرامج المكتوبة بلغات طبيعية مثل سي وسي ++ أكثر منها.
برامج جافا سيئة جداً في استغلال الموارد مقارنة بمثيلاتها المكتوبة بلغات أخرى. مثلاً قارن برنامج Vunze و Transmission torrent اﻷول برنامج بطيء جداً ويستهلك ذاكرة ومعالج. قمت بإنزاله ثم لم اعد استخدمه بعد ما جربته أكثر من مرة، رجعت لبرنامج Transmission . ايضاً استخدم NetBeans وهي أداة رائعة، لكنها مستهلكة جداً للموارد، مقارنة بأدوات تطوير أخرى مثل دلفي. JBuilder مكتوبة بالدلفي وليس جافا، والدليل أنها لا تعمل في نظام لينكس.
Swing هي مكتبة سيئة جداً مقارنة بالمكتبات الطبيعية لأنظمة التشغيل مثل QT, GTK, Win32/64
لهذا قلتُ لك يا أخي الفاضل أنك تتحدث للأسف عن أشياء لا تعرفها مع احترامي الشديد لك :)
أنت لا تعرف التكلم مع الناس، ولا تعرف الاحترام. مكانك المنتديات هي مليئة بأمثالك، وليس هنا. انا مستغرب أنك من موريتانيا، هل أنت متأكد أنك من ذلك.
لماذا تردد عبارات ليس لها معني ومتناقضة مع ما تقول. مثل أخي الفاضل، ومع احترامي لك. أن لا تتكلم معي بأي احترام
هذه ليست قائمة طويلة. البرامج المكتوبة بلغات طبيعية مثل سي وسي ++ أكثر منها.
هذا غيض من فيض و لو أدرتُ الاستفاضة لفعلت.
برامج جافا سيئة جداً في استغلال الموارد مقارنة بمثيلاتها المكتوبة بلغات أخرى. مثلاً قارن برنامج Vunze و Transmission torrent اﻷول برنامج بطيء جداً ويستهلك ذاكرة ومعالج.
وجود برنامج أو اثنين بهذا المستوى لا يعني التعميم، إن كنا نتحدث عن استغلال الموارد و تسيير الذاكرة فالسي و السي++ هما الأفضل و بدون منازع لكن هذا لا يعني أن الجافا لا ترقى لمستوى المنافسة لأن عشرات البرامج المكتوبة بالجافا لا زالت تُنافس و بقوة مثيلاتها في السوق.
JBuilder مكتوبة بالدلفي وليس جافا
تأكد من ذلك، جزء كبير من JBuilder تمت كتابته بالجافا.
Swing هي مكتبة سيئة جداً مقارنة بالمكتبات الطبيعية لأنظمة التشغيل مثل QT, GTK, Win32/64.
لا أوافقك الرأي مُطلقاً.
انا مستغرب أنك من موريتانيا، هل أنت متأكد أنك من ذلك.
نعم !
لماذا تردد عبارات ليس لها معني ومتناقضة مع ما تقول. مثل أخي الفاضل، ومع احترامي لك. أن لا تتكلم معي بأي احترام
أعتذر لك إن كنت قد أسأت إليك.
مادام اعتذرت فلا مشكلة.
في الماضي كُنت استخدم دلفي (لغة أوبجكت باسكال) لمدة قاربت العشرين سنة. لكن بسبب المقاطعة الأمريكية للسودان توقفت عن استخدام دلفي وتحولت إلى جافا، وهي لغة رائعة، كلغة برمجة غنية، لكن مشكلتها الكبيرة هي في اﻷداء واستهلاك الموارد مقارنة بدلفي وبما تعودته من كتابة برامج لشركات اﻹتصالات تحتاج لتكون سريعة وتعمل لوقت طويل دون توقف، أيضاً تعودنا أن يكون هُناك عدد كبير من البرامج في نفس الجهاز. وقد نافسنا شركة أوروبية كانت قد كتبت برنامج بلغة جافا في عام كامل، فقمنا بإعادة كتابته بواسطة دلفي في ثلاث أشهر فقط ولم تكن فيه عيوب البرنامج اﻷول. فما كان من شركة اﻹتصالات إلا أن أوقفت التعامل مع الشركة اﻷوروبية وإيقاف برنامجها.
لكن اﻵن أصبحت استخدم جافا فقط في معظم برامج الاتصالات، مثل خدمات الويب وبرامج الويب، وقد طورنا برنامج بقيمة 30 ألف دولار، معظمه كان مكتوب بالجافا. لكن بين الحين واﻵخر ما زلت أجد مشكلة استهلاك الموارد. وتعدد نُسخ المنصات Java 1.6, 1.7 كذلك لم اعتبرها حل لتطوير برامج سطح المكتب. أحياناً نقوم بكتابة برنامج بواسطة فري باسكال وتكون خلفيته خدمة ويب مكتوبة بالجافا تعمل في Tomcat. لغة فري باسكال ما تزال في طور الشباب، بعض بروتوكولات اﻹتصالات غير موجودة فيها، نقوم بسد تلك الثغرة بواسطة برنامج جافا، ونفص جافا نقوم بإتمامه بلغة فري باسكال. هذا بالنسبة لنا، أما باقي الشركات ربما يكون لهم طريقة اخرى لتغطية كل نفص في لغات البرمجة. احياناً نقوم بإستخدام لغة PHP مع الجافا.
المشكلة تكمن في الشخص الذي يعتقد أن هناك لغة سحرية تستطيع عمل كل أنواع البرامج. وأنا شخصياً كنت اعتقد ذلك عندما كنت استخدم دلفي، كنت متعصب لها واعتبرها هي اللغة اﻷولى في العالم وماعداها لا يرقى لمستواها. أما اﻵن فأختلف هذا التفكير. وإلا لما سمعنا عن صدور لغة برمجة جديدة بين الفينة واﻷخرى.
Swing هي مكتبة سيئة جداً مقارنة بالمكتبات الطبيعية لأنظمة التشغيل مثل QT, GTK, Win32/64.
لا أوافقك الرأي مُطلقاً.
مكتبة Swing القياسية شكلها بدائي جداً مقارنة بالمكتبات اﻷخرى. مثلاً File dialog قارن بينه وبين الـ File Dialog الموجود في الوندوز وفي لينكس QT أو GTK تجده بدائي جداً مشابه لـ FIle dialog الذي كان يأتي مع وندوز 3 في التسعينيات
مكتبة Swing القياسية شكلها بدائي جداً مقارنة بالمكتبات اﻷخرى. مثلاً File dialog قارن بينه وبين الـ File Dialog الموجود في الوندوز وفي لينكس QT أو GTK تجده بدائي جداً مشابه لـ FIle dialog الذي كان يأتي مع وندوز 3 في التسعينيات
أنت تتحدث عن الشكل الافتراضي لـ File dialog لكن عموماً شكل مُكونات Swing يتغير حسب الـ Look and Feel.
إن أردت الحصول على File dialog تبع السيستم فقم بتغيير الـ Look and Feel إلى SystemLookAndFeel ! :)
هذه ثلاث صور للـ File dialog
Default swing
look and feel
Free Pascal GTK2
كلها في نظام أوبونتو لينكس
وهذه هو كود جافا
public static void main(String[] args) {
try {
UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName());
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"JPG & GIF Images", "jpg", "gif");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " +
chooser.getSelectedFile().getName());
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException | HeadlessException ex) {
System.err.println("Error in look and feel: " + ex.toString());
}
}
}
وهذا كود أوبجكت باسكال لفتح الـ Open dialog
OpenDialog1.Execute;
توجد أدوات كثيرة جداً لتغيير الـ LookAndFeel.
من ناحية الـ design أفضل jtattoo :)
هذه صورة لـ password manager كتبته سابقاً بالحافا :
مكانك المنتديات هي مليئة بأمثالك، وليس هنا
فقط للتوضيح أخي الكريم، أنا قادم من منتدى الفريق العربي للبرمجة و كنت أحد المشرفين على قسم السي و السي++ و أؤكد لك أن ما يحويه arabteam من العلم و الفائدة لا يوجد ثلثه هنا، ليس هذا من باب المفاخرة و لكن من باب الحقيقة، الفريق العربي تم إطلاقه قبل 14 سنة من الآن و كان يجمع كبار المبرمجين في العالم العربي قبل أن تُصبح المنتديات démodés و تنتقل الناس إلى المدونات و ما شابه.
قولك بأن المنتديات تليق بي و بأمثالي يعني أنك لم تزر الفريق العربي سابقاً، لذا أدعوك لزيارته و التعرف عل كم المعلومات الهائل الذي يحتويه المنتدى و هو الآن أكبر و أقدم مرجع عربي للمبرمجين.
أما بالنسبة لي فأقترح عليك زيارة المواضيع و الدورات التي كتبتها في arabteam لتحكم علي بدقة أكثر.
بالنسبة لأسلوبي في الحديث
On s'est mal compris, je reconnaissais mes erreurs et je t'ai demandé pardon, donc nous devons dorénavant oublié ce qui s'est passé
لك مودتي.
ليس هُناك مشكلة، فقد تعلمت كثيراً في هذا اليوم :)
الساعة تقارب التاسعة مساءً وأنا فاتح أدوات البرمجة NetBeans و Free Pascal Lazarus وهذا من النادر ما يحدث.
شكراً لك
زوجتي ظنت أني أكتب مقالة عن الضرائب، من شدة انهماكي في هذا الوقت المتأخر مع الكمبيوتر. فقد كُنت في زيارتهم اليوم، وفرضوا علي مبلغ كبير. ولم استطع العمل اليوم بسبب ذلك، لكن الحمد لله اليوم لم يضع، طلعت منه ببعض المعلومات المهمة حول لغات البرمجة.
لا تنسى أيضاً أن الـ JVM مكتوبة بلغة سي أو سي++، أي أن لغة جافا معتمدة على لغة أخرى في بنيتها الأساسية، ولا تستطيع الاستغناء عن اللغات الـ native أما باقي اللغات فلا تحتاج للجافا في شيء، يمكن أن يكون لديك جهاز حاسوب خالي تماماً من كل برامج الجافا، كلها برامج طبيعية سريعة الاستجابة واقل استهلاكاً للموارد.
لا تنسى أيضاً أن الـ JVM مكتوبة بلغة سي أو سي++
لا أنكر ذلك :)
مقارنة الجافا مع السي أو السي++ من حيث تسيير الذاكرة مقارنة خاطئة لأن الـ garbage collector مكتوب بالسي و بالتالي الجافا لا تُسير الذاكرة من تلقاء نفسها.
يمكن أن يكون لديك جهاز حاسوب خالي تماماً من كل برامج الجافا
لا أتفق معك، الجافا الآن موجودة و بقوة في كافة الميادين على عكس السي و السي++، الجافا موجودة في : تطبيقات سطح المكتب، تطبيقات الويب ، تطبيقات الهاتف و حتى الثلاجات و الساعات و حفائظ الأطفال باستخدام Android Wear.
الجافا غير موجودة في منصات أهم، وهي: Android و I-phone
أو على اﻷقل شعارهم write once and run anywhere غير صحيح، لا يمكنك كتابة برنامج جافا لوندوز ثم تشغيله في أندرويد أو I-phone. وبرنامج أندرويد المكتوب بالجافا الخاصة بقوقل لا يمكن تشغيله في موبايل آخر ذو نظام تشغيل مختلف حتى لو كان يدعم جافا مثل Blackberry
السلام عليكم
ماهو رأيك في هذا الخبر، أن Cassandra تمت إعادة كتابتها بلغة C++ فأصبحت أسرع 10 مرات من النُسخة المكتوبة بجافا
أخي الفاضل، اقرأ و تعلم قبل أن تحكم على شيء ما.
اسمحولي إخوتي الكرام أن أنسحب من هذا النقاش و سُعدت جداً بهذا الحوار :)
تذكر ، كنتَ أنت مثلهم أو أقل يوماً ما :)
-
إن كنت ترى أرابيا يملأها الغير متعلمين :) فلما أنتَ هنا ؟ عليك بذهاب والجلوس مع لاري أو بيل جيتس ، فالمبرمجون هنا ليسوا من المستوى :)
-
اسمحلي ولكن تعليقاتك كلها تستنقص بالأخرين ، نعم لديك علم بالأمر ، ولكن هذا لا يبيح لك مثل هكذا أسلوب في ردود ، فهو لا يدل على ذو ثقافة أبداً :)
طالب العلم في رحلة مٌستمرة للبحث عن ما ينقصه لأن العلم في تطور و الحكمة ضالة المؤمن أينما وجدها فهو أحق بها.
إن كنت ترى أرابيا يملأها الغير متعلمين
لم أقل هذا أبداً !
اسمحلي ولكن تعليقاتك كلها تستنقص بالأخرين
لم أستنقص من الآخرين و لكن أرى أنه من غير الجدية و الموضوعية أن يتكلم أحد في شيء لا يتقنه، هل هذا خطأ ؟
لم أستنقص من الآخرين و لكن أرى أنه من غير الجدية و الموضوعية أن يتكلم أحد في شيء لا يتقنه، هل هذا خطأ ؟
قل لي اسم شخص واحد يتقن لغة برمجة ما. حتى لو كان هو من طورها.
في إحدى المرات وجدت احد مطوري مترجم فري باسكال أو أداة التطوير لازاراس، فسألته عن أشياء فيها. فقال لا يعرفها، فاستغربت من ذلك، لكنه أقنعني أنه مشروع كبير وكل شخص متخصص في مجال معين فيه.
طالب العلم في رحلة مٌستمرة للبحث عن ما ينقصه لأن العلم في تطور و الحكمة ضالة المؤمن أينما وجدها فهو أحق بها.
أقتبس لك رد الأخ الذي رددت على رده :
هو أعتقد أن تعليقي للسخرية منه أو من اللغة ولم يفهم بأني أردت فهم طرق التشفيير
وأقتبس لك من رده الأول :
هل هذا يعني أن معظم البرامج المكتوبة بالجافا سهلة الكسر ؟!
المنطقي عندما يطرح سؤال شخص في أي مكان في العالم ، سيكون الرد " جواب " على السؤال ، وليس طلب منه أن يذهب ويتعلم ، فهو سأله بالأصل للتعلم ، ويمكنك قرآءة الرد التالي :
، وتركيز على نقطة تالية :
على الأرجح أنك لن تحتاج أن تبحث عن دورة ROR كما يفعل المبتدئ في عالم البرمجة. بل سوف تكون اسألتك ماهي طرق الاتصال بقاعدة البيانات ...
أي أنه في عامل البرمجة السؤال يدل على علم مسبق في المعطيات ويريد جواب، ولا يجهلها البتة !
-
-
لم أقل هذا أبداً !
عزيزي إنظر لكل ردودك هنا ، بصراحة لم استفد إلا قليل منها ، لأن أغلبها ليس منطوي تحت أي فائدة أو نقاش ضمن الموضوع :)
-
-
لم أستنقص من الآخرين و لكن أرى أنه من غير الجدية و الموضوعية أن يتكلم أحد في شيء لا يتقنه، هل هذا خطأ ؟
هل أنتَ جاد ؟ لماذا وجدَ مجتمعات للنقاش ؟ أليس ليناقش ذو الخبرة بعضهم وقليل الخبرة يتعلم من نقاشه ؟ أصلاً ما فائدة النقاش إلا تعلم الطرفين !
بل أكبر خطأ ، إن كنت ترى أن لا يجب التكلم إلا من الخبراء ، حسناً كلامي هذا قط لم يكن خطأ ، وأقتبس :
عليك بذهاب والجلوس مع لاري أو بيل جيتس ، فالمبرمجون هنا ليسوا من المستوى :)
-
أسف على وقتك ، وأعتذر لن أكمل نقاش حول هذا الأمر :)
المنطقي عندما يطرح سؤال شخص في أي مكان في العالم ، سيكون الرد " جواب " على السؤال ، وليس طلب منه أن يذهب ويتعلم
قوله "هذه فضيحة للجافا" استفزني جداً و لا أدري كيف يأخذ أحكاما مُسبقة و هو يقول بأنه مبتدأ.
الهجوم على لغة ووصفها بالفضيحة سوقيٌ جداً و لا يمت للموضوعية بصلة و أنا أفضل الانسحاب في هذه الحالة لأن النقاش سيأخذ مجرى آخر.
أسف على وقتك ، وأعتذر لن أكمل نقاش حول هذا الأمر :)
طابت أوقاتك، بالتوفيق.
فقط للتوضيح
استفزني جداً و لا أدري كيف يأخذ أحكاما مُسبقة و هو يقول بأنه مبتدأ.
ركز في جملته :)
و مع ذلك غير مقتنع بمعظم الكلام إنها فضيحة بالنسبة Java
-
وطاب مسائك :)
كنت أعتقد أن فكرك غير محدود ، لما عرفت لماذا هاجمتني غيرت رأيي فيك :) ، بالمناسبة جملة "أنا مبتدأ و مع ذلك غير مقتنع بمعظم الكلام إنها فضيحة بالنسبة Java في تشفير ال Source code" أنا قصدت بهذة الجملة إني على غير إقتناع بالرد الأعلى الخاص بالأخ "معتز" لما قال إنها فضيحة بالنسبة اللجافا لأنها اللغة الثانية في الإستخدام وليس مهاجمة اللغة بحد ذاتها ، كيف أهاجم أول لغة تعلمتها ؟! خلاصة الكلام ليس ذنبي إنك فهمت قصدي غلط وظلمتني وأتمنى عدم الحكم السريع على الأشخاص
التعليقات