سؤال

Java هي إحدى لغات البرمجة المفضلة لدي.أواجه دائمًا المشكلة على الرغم من توزيع طلبي على المستخدمين النهائيين.

إن منح المستخدم ملف JAR ليس دائمًا سهل الاستخدام كما أريد، كما أن استخدام Java WebStart يتطلب أن أحتفظ بخادم ويب.

ما هي أفضل طريقة لتوزيع تطبيق جافا؟ماذا لو كان تطبيق Java يحتاج إلى تثبيت عناصر على كمبيوتر المستخدم؟هل هناك أي أنظمة جيدة لتثبيت/تغليف Java؟

هل كانت مفيدة؟

المحلول

هناك مجموعة متنوعة من الحلول، اعتمادًا على متطلبات التوزيع الخاصة بك.

  1. مجرد استخدام جرة.يفترض هذا أن المستخدم لديه إصدار Java الصحيح المثبت، وإلا سيحصل المستخدم على استثناءات "إصدار تنسيق ملف الفئة".وهذا جيد للتوزيع الداخلي داخل الشركة.

  2. استخدم Launch4j ومثبت مثل NSIS.يمنحك هذا مزيدًا من التحكم، على الرغم من أنه لا يزال بإمكان المستخدم القيام بأشياء غبية مثل إلغاء تثبيت وقت تشغيل Java.ربما يكون هذا هو النهج الأكثر شيوعًا، وهو ما أستخدمه حاليًا.

  3. استخدم ويبستارت.يفترض هذا أيضًا أن المستخدم قد قام بتثبيت إصدار Java الصحيح، ولكن من الأسهل كثيرًا البدء.تجربتي هي أن هذا أمر جيد بالنسبة لبيئات الإنترانت الخاضعة لرقابة مشددة، ولكنه يصبح مؤلمًا مع عمليات النشر الأكبر لأنه يحتوي على العديد من حالات الفشل الغريبة.قد يتحسن الأمر بفضل تقنية المكونات الإضافية الجديدة في Java 1.7.

  4. استخدم مترجم التعليمات البرمجية الأصلي مثل Excelsior JET وقم بتوزيعه كملف قابل للتنفيذ، أو قم بتغليفه في برنامج التثبيت.باهظ الثمن، ويربطك بشكل عام بإصدار أقدم قليلاً من Java، وهناك بعض الألم عند التحميل الديناميكي للفصل، ولكنه فعال جدًا للنشر على نطاق واسع حيث تحتاج إلى تقليل متاعب الدعم.

نصائح أخرى

المثبت المتقدم يجعل من السهل تجميع تطبيقات Java كملفات تنفيذية لنظام التشغيل Windows، كما أنها مرنة جدًا في طريقة إعدادها.لقد وجدت أن هذه هي الطريقة الأسهل لتوزيع تطبيقات جافا على عملاء Windows.

JSmooth هو برنامج بسيط يأخذ الجرة الخاصة بك ويغلفها في ملف قياسي قابل للتنفيذ لنظام Windows.يأتي مزودًا بواجهة مستخدم رسومية بسيطة تتيح لك تكوين JVM المطلوب أو تجميعه مع التطبيق أو توفير خيار تنزيله إذا لم يكن مثبتًا بالفعل.يمكنك إرسال ملف exe كما هو أو ضغطه مع التبعيات المحتملة (أو السماح للبرنامج بتنزيل التبعيات الإضافية من الشبكة عند بدء التشغيل).كما أنها مجانية، كما هو الحال في البيرة والكلام، وهو ما قد يكون (أو لا يكون) أمرًا جيدًا.

يعتمد ذلك على مدى تطور المستخدمين المستهدفين.في معظم الحالات، تريد عزلها عن حقيقة أنك تقوم بتشغيل تطبيق يستند إلى Java.امنحهم أداة تثبيت أصلية تقوم بالشيء الصحيح (إنشاء إدخالات قائمة البدء، وقاذفات، والتسجيل باستخدام إضافة/إزالة البرامج، وما إلى ذلك) وتجميع وقت تشغيل Java بالفعل (بحيث لا يحتاج المستخدم إلى معرفته أو الاهتمام به).أود أن أقترح أداة التثبيت عبر الأنظمة الأساسية الخاصة بنا، برنامج BitRock InstallBuilder.على الرغم من أنه لا يعتمد على Java، إلا أنه يُستخدم بشكل شائع لحزم تطبيقات Java.يمكن دمجه بسهولة مع Ant ويمكنك إنشاء مثبتات Windows من Unix/Linux/Mac والعكس.نظرًا لأن المثبتات التي تم إنشاؤها أصلية، فإنها لا تتطلب وجود خطوة استخراج ذاتي أو وجود JRE بالفعل في النظام المستهدف، مما يعني أن المثبتات أصغر حجمًا وتوفر عليك بعض المتاعب.أود أيضًا أن أذكر أن لدينا تراخيص مجانية للمشاريع مفتوحة المصدر

الملفات القابلة للتنفيذ هي الأفضل ولكنها محدودة النظام الأساسي، أي.استخدم جي سي جي : http://gcc.gnu.org/java/ لينكس لإنتاج الملفات التنفيذية واستخدام Launch4j : http://launch4j.sourceforge.net/ لإنتاج الملفات التنفيذية ويندوز.للحزم على Linux، يمكنك استخدام أي حزمة rpm أو deb.لمحاولة win32 http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System

إذا كان تطبيق مستخدم نهائي حقيقي يحتوي على واجهة المستخدم الرسومية، فيجب عليك تجاهل اللغة التي كتبت بها البرنامج (Java) واستخدام أداة التثبيت الأصلية لكل من الأنظمة الأساسية التي اخترتها.يريد الأشخاص الذين يعملون بنظام Mac الحصول على ملف ‎.dmg، وعلى نظام التشغيل Windows، يعد برنامج التثبيت ‎.msi أو ‎.exe هو الحل الأمثل.على نظام التشغيل Windows، أفضل NSIS من NullSoft فقط لأنه أقل اعتراضًا من InstallShield أو InstallAnywhere.في OSX، يمكنك الاعتماد على وجود JVM هناك بالفعل.على نظام التشغيل Windows، ستحتاج إلى التحقق منه وتثبيته إذا لزم الأمر.لن يقوم مستخدمو Linux بتشغيل تطبيقات Java GUI، والقليلون الذين سيفعلون ذلك، يعرفون ما يجب فعله باستخدام ملف .jar القابل للتنفيذ.

على الرغم من أنني لم تستخدم NSIS (نظام Nullsoft Scriptable Installer) بنفسي، هناك برامج نصية للتثبيت ستتحقق مما إذا كان JRE المطلوب مثبتًا على النظام الهدف أم لا.

تتوفر العديد من نماذج البرامج النصية من أمثلة على الكود و المثبتون في العالم الحقيقي الصفحات، مثل:

(يرجى ملاحظة أنني لم أستخدم أيًا من النصوص البرمجية فعليًا، لذا يرجى عدم اعتبارها بمثابة تأييد.)

كنت بحاجة إلى طريقة لتجميع مشروعي وتبعياته في ملف jar واحد.

لقد وجدت ما أحتاجه باستخدام البرنامج المساعد Maven2 Assembly: Maven2 البرنامج المساعد الجمعية

يبدو أن هذا يكرر وظيفة جرة واحدة, ، ولكن لا يتطلب أي تكوين إضافي لبدء تشغيله.

بالنسبة لتطبيقات Java البسيطة، أحب استخدام Jar's.من السهل جدًا توزيع ملف واحد يمكن للمستخدم فقط النقر عليه (Windows)، أو

java -jar jarname.jar

IMHO، jar هو الحل الأمثل عندما تكون البساطة مطلبًا رئيسيًا.

أقوم بتطوير تطبيقات Eclipse RCP.عادة، لبدء تشغيل تطبيق Eclipse، يتم تضمين مشغل قابل للتنفيذ.أقوم بتضمين جهاز Java الظاهري داخل مجلد التطبيق في الدليل الفرعي /jre لضمان استخدام إصدار Java الصحيح.

ثم نقوم بحزم برنامج Inno Setup للتثبيت على جهاز المستخدم.

ما هي أفضل طريقة لتوزيع تطبيق Java؟ماذا لو كان تطبيق Java يحتاج إلى تثبيت القطع الأثرية على كمبيوتر المستخدم؟هل هناك أي أنظمة تثبيت/تغليف جافا جيدة هناك؟

في تجربتي (من تقييم عدد من الخيارات), install4j هو حل جيد.فهو يقوم بإنشاء أدوات تثبيت أصلية لأي نظام أساسي، وهو موجه خصيصًا لتثبيت تطبيقات Java.للتفاصيل راجع "سمات"على موقعها على الانترنت.

ومع ذلك، فإن install4j أداة تجارية.خاصة إذا كانت احتياجاتك بسيطة نسبيًا (فقط قم بتوزيع تطبيق وتثبيت بعض العناصر)، فهناك العديد من الخيارات الجيدة الأخرى، بما في ذلك الخيارات المجانية (مثل izPack أو ما سبق ذكره Lauch4j).لكنك طلبت أفضل الطريقة، وحسب معرفتي الحالية، فإن install4j هو الحل الأمثل، خاصة لتوزيع تطبيقات Java (EE) الأكبر حجمًا أو الأكثر تعقيدًا.

أفضل إجابة تعتمد على النظام الأساسي.بالنسبة للنشر على نظام التشغيل Windows، فقد حصلت على نتائج جيدة باستخدام مجموعة من جرة واحدة و Launch4j.لقد استغرق الأمر بعض الوقت لإعداد بيئة البناء الخاصة بي بشكل صحيح (نصوص النمل، في الغالب) ولكن الآن أصبح الأمر غير مؤلم إلى حد ما.

حسنًا، من وجهة نظري، فإن آلية التوزيع المتفوقة هي استخدام شيء من هذا القبيل انقر مرة واحدة, ، أو ويب ستارت تكنولوجيا.ما عليك سوى نشر الإصدار على الخادم وسيصل تلقائيًا إلى العملاء عند إصدار الإصدار.يحتوي نظام Eclipse RCP أيضًا على UpdateManager الذي يقوم بما يفعله WebStart، ولكنه أيضًا أكثر من ذلك بكثير.

وبما أنني أستخدم Maven2 للبناء، فإن النشر هو مجرد قطعة من الكعكة:انسخ الجرة المدمجة إلى الموقع على الخادم، وقم بتحديث ملف jnlp إذا لزم الأمر، وبذلك تكون قد انتهيت.

يعد installanywhere أمرًا جيدًا ولكنه مكلف - لم أجد (مثل) واحدًا مجانيًا جيدًا

سأقوم بضغط ملف الجرة مع الجرار التابعة الأخرى وملفات التكوين والوثائق بالإضافة إلى ملف run.bat/run.sh.يجب أن يكون المستخدم النهائي قادرًا على فك ضغطه إلى أي مكان وتحرير ملف run.bat إذا لزم الأمر (يجب تشغيله بدون تحرير في معظم الحالات).قد يكون المثبت مفيدًا إذا كنت تريد إنشاء إدخالات في قائمة البداية أو سطح المكتب أو علبة النظام وما إلى ذلك.

كمستخدم أفضّل فك الضغط وتشغيل نوع التثبيت (بدون إدخالات في قائمة البدء من فضلك).ومع ذلك، قد يكون لدى الأشخاص خارج صناعة تكنولوجيا المعلومات تفضيلات مختلفة.لذا، إذا كان التطبيق مستهدفًا إلى حد كبير للمطورين، فقد يتم تثبيت مسار zip-run.bat والتطبيقات لعامة الناس باستخدام المثبت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top