Bir masaüstü Java oyunu, Java çalışma zamanı bağımlılığı olmadan nasıl dağıtılabilir?


9

Bir Java uygulamasını "kutunun dışında" çalışan bağımsız bir pakete dönüştürmek mümkün müdür? Son kullanıcının herhangi bir Java JRE yüklemesi veya yükleyicinin bir JRE içermesi ve kullanıcı için yüklemesi gerekmemelidir.

Son dağıtım, normal veri dosyaları ve gerekirse ek JAR'larla birlikte yerel bir yürütülebilir dosya (umarım Windows, Mac ve Linux'un her biri için bir tane) içermelidir. Özellikle bir "tek dosya" çözümü aramıyorum - aslında veri dosyalarının belirsiz olmasını istiyorum.

Bu nasıl yapılabilir?

Yanıtlar:


8

Ana nokta, son kullanıcının herhangi bir Java JRE yüklemesi gerekmemesi veya yükleyicinin bir JRE içermesi ve kullanıcı için yüklemesi gerekmemesidir.

Kod kaynak derleyicilerini işlemek için Java kaynağını / bayt kodunu kullanabilirsiniz. Orada Excelsior JET Windows ve Linux (lisans gerektirir) ve için Java için GNU derleyicisi eskidir.

Java'yı oyununuza yüklemeden dahil etmek uygunsa, muhtemelen Java Runtime'ı oyununuzla paketleyebilir ve oyunu başlatmadan JAVA_HOMEönce JRT konumunuza ayarlamak için bir başlangıç ​​komut dosyası kullanabilirsiniz .

EDIT: (yorum yanıtı) İkinci seçeneği kullanarak, yine de bu platform için uygun Java çalışma zamanı kullanarak farklı platformlar için farklı derlemeler gerekir.

EDIT2: Aslo bkz. Dmitry son yorum.



İkinci seçenek iyi görünüyor, ancak Windows JRE'mi paketlersem çapraz platform mu? Excelsior'da olduğu gibi, bu tür derleyicileri üç farklı işletim sisteminde çalıştırmam gerekir mi?
leokhorn

1
Her sürümle birlikte JRE platformlarını bir araya getirmeniz gerekir, ancak aslında çapraz platformlar olarak kalacaktır.
Derek

1
@leokhorn Bir noktada yerel kod olmalı. Ya yerel koda derlemeniz ya da yerel bir VM'de çalıştırmanız gerekir. C planı yok.
Adrian,

1
GCJ artık resmi olarak öldü , ancak Excelsior JET Standard Edition ticari kullanım için de ücretsiz hale geldi , ancak tek endişeniz dağıtım kolaylığı ise, birçok alternatif var
Dmitry Leskov

1

Mac için, Mac için Java uygulaması paketleme Oracle belgelerine bakın . Java 7'yi, çalışma zamanını Mac App Store'da dağıtım için gerekli olan jar dosyalarınızı (.app gerçekten yürütülebilir olarak kabul edilen bir klasör) içeren bir uygulama paketine paketleyebilmeniz için ayarladılar. Temel olarak, .app paketi çoğunlukla Eren'in JAVA_HOME yanıtının önerdiği ile aynıdır, ancak bir "yerel" Mac uygulaması olarak paketlenmiştir.

Mac App Store olmadan dağıtmak için, uygulamayı imzalamamaktan, Mountain Lion kullanıcılarına Gatekeeper'da dolaşabileceklerini söyleme sağ tıklatarak (veya ctrl + tıklama) ve "Aç" düğmesini tıklatarak önce uygulamayı açın. Bu, yine de uygulamanın imzalanmadığı konusunda onları uyarır, ancak yine de açılmalarına izin verir ve ardından sonraki açılışlar için uygulamayı çift tıklamasına izin verir.

(yan not: kabuk komut dosyalarının Linux tarzı işaretlenmesini yürütülebilir olarak da kaldırabilir ve ardından bunun etrafında bir .app paketi oluşturabilirsiniz. NetBeans bunu Mac ve Linux'ta paketlenmiş bir JRE / JDK olmasa da yapar)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.