Standalone Exe

Status
Nicht offen für weitere Antworten.

eliteSchaf

Mitglied
Hallo erstmal!
Bin seit ca 2 Jahren mit C# beschäftigt und habe mir gedacht, dass es nicht schlecht ist, wenn ich mich n wenig mit anderen Sprachen beschäftige. Nun zu meiner eigentlichen Frage.
Braucht man in Java auch so etwas wie .NET Framework oder werden immer Stand-Alone Dateien erzeugt?

Dexter
 

Xandro

Bekanntes Mitglied
Also um in Java zu programmieren benötigst Du das Java Development Kit (JDK),
dass Dir die Java Virtual Machine (JVM) und alle nötigen Elemente (Klassen, Pakete, etc.) mitliefert.
Diese sind grundlegend und darauf kannst Du 'leider' nicht verzichten...
Genau wie beim .NET Framework muss man die Java Runtime Environment (JRE) auf dem Zielrechner installiert haben,
um ein Java-Programm zum Laufen zu bringen.

Hoffe, dass hat Dir geholfen.
 

Bleiglanz

Gesperrter Benutzer
ja, du brauchst auch eine Laufzeitumgebung

es ist (fast) das gleiche in grün (Compiler erzeugt Bytecode der von einer JVM ausgeführt wird)

MSIL = Java-ByteCode

C# = Die Programmiersprache Java

cs.exe (der C# Compiler) = javac

eine .exe starten = java <Klassenname>

.NET Runtime = JRE

.NET Library = die Java Klassenbibliothek

Assembly = jar-Datei

usw. usf.

Ein Unterschied ist, dass die "virtuelle Maschine", die solchen ByteCode ausführen kann für Java für verschiedene Architekturen verfügbar ist (Mac, Solaris, Linux, Windows)
 

MPW

Top Contributor
Man koennte es vllt. mal so formulieren:

C# ist ein fake von Java, den Microsoft gemacht hat.

Java hat den Vorteil, dass es auch unter Linux und Apple und sonst noch exotischen Plattformen laeft, C# hat den Vorteil, dass es besser mit nativen Windowsprogrammen und dll-LIbraries kommunizieren kann. Dies geht zwar in Java auch, ist aber etwas komplizierter.
 

thE_29

Top Contributor
C# ist kein Nachmachung ;)

C# ist eine verbesserte C++ und VB Version!

Man kann leicht auf WinApi Dinger zugreifen hat die Syntax von C++ und auch Vorteile von java (was aber Neuerungen in C++ auch haben).

Wenns Operator überladen und friends Deklarationen von C++ auch noch hat, ist die Sprache eh super!!

Nur Plattformunabhängig ist ja halt net.. Außer jemand portiert das .NET Framework/Runtime in anderen OS..
 
G

Guest

Gast
Da haette ich auch nochma ne Frage zu: In C# kann man naemlich Programme nativ kompilieren... ist das in Java auch moeglich? Weil diese haessliche JVM ist ja echt fett und lahm...

BTW: Es gibt Mono, noch nicht viel mit beschaeftigt, aber damit sollten .NEt Programme unter Linux laufen. Also das ist das .Net Framework fuer Linux.
 

The_S

Top Contributor
Naja, so lahm isses auch wieder net ???:L .

Du kannst exe-Dateien erzeugen, bin jetzt aber zu faul die die ganzen Nachteile aufzuzählen, such mal im Forum, da gibts genug Beispiele zu ;).
 
B

bygones

Gast
auch die umwandlung in eine exe verhindert nicht, dass man die jvm braucht

@gast:
nein man kann nicht, die JMV ist im Grunde nur groß, nicht lahm... wenn es dir nicht passt nehm ne andere Sprache !
 

Bleiglanz

Gesperrter Benutzer
@gast
BTW: Es gibt Mono, noch nicht viel mit beschaeftigt, aber damit sollten .NEt Programme unter Linux laufen. Also das ist das .Net Framework fuer Linux.

Nein, das ist ein 95-98 % .NET für Linux, und erzeugt wahrscheinlich ganz neue Probleme
 
G

Guest

Gast
Es geht ja garnicht darum ob man JVM braucht oder nicht braucht, nur ein JIT Compiler(heisst der so in Java?) ist nun mal von Natur her um einiges langsammer als ein natives Programm, ob das nun noch irgendwelche Dependencies zu der JVM oder aehnliches hat ist ja nen ganz anderer Schnack es geht nur darum, dass man eine nativ compilierte Executable hat und keinen Byte-Code...
 

Bleiglanz

Gesperrter Benutzer
reine Legenden, was heisst "etwas langsamer"? Spürbar??

je nachdem was man will kann man sich auch Benchmarks bauen, bei denen Java schneller als C/C++ ist, kein Problem.

google nach "Excelsior JET" wenn du native exes haben willst, oder versuchs mit dem GNU Compiler

aber auch dass ist nicht wirklich total 100% native, das geht bei Sprachen wie Java, die unbekannte Module aus dem Internet nachladen können überhaupt nicht...
 

thE_29

Top Contributor
Ausserdem gibts ja für WIN auch einen Java to C++ Converter...

Wennst schon unbedingt ne exe haben willst ^^
 

MPW

Top Contributor
deathbyaclown hat gesagt.:
auch die umwandlung in eine exe verhindert nicht, dass man die jvm braucht

Doch, es gibt einen Compiler der das kann, allerdings ist das eine andere Sourcecodeimplementierung und die kann kein swing und awt, nur swt, ist daher auch muell.(GNU siehe unten)


Bleiglanz hat gesagt.:
reine Legenden, was heisst "etwas langsamer"? Spürbar??

Jep, siehe Java3D, man sagt zwar das das fuer Java recht schnell sein soll, kannst aber in die Tonne kloppen, ein schnelles ActionSpiel ist mit heutiger Rechnerperformence undenkbar.

Bleiglanz hat gesagt.:
je nachdem was man will kann man sich auch Benchmarks bauen, bei denen Java schneller als C/C++ ist, kein Problem.

Hm, gib mal ein Beispiel, das interessiert mich jetzt wirklich mal...


Bleiglanz hat gesagt.:
google nach "Excelsior JET" wenn du native exes haben willst, oder versuchs mit dem GNU Compiler

Wer glaubt das sei schnell, der irrt, JET ist langsamer als die JVM. GNU finde ich muell, da der - wie oben genannt - nicht mit Swing und AWT arbeiten kann.
 

MPW

Top Contributor
Verdammt, hab ich doch noch was vergessen, sry doppelpost;-)


thE_29 hat gesagt.:
Ausserdem gibts ja für WIN auch einen Java to C++ Converter...

Wennst schon unbedingt ne exe haben willst ^^

Wen meinst du da, GNU oder gibt es da einen anderen, poste mal bitte den Link, interessiert mich....
Findet die Transformation auf Compilations oder Sourceebene statt, letzteres wuerde es ja wirklich performant machen, aber geht voellig am Ziel vorbei, da man ja - wenn man es koennte - auch direkt C++ schreiben koennte.
 
B

Beni

Gast
MPW hat gesagt.:
Bleiglanz hat gesagt.:
reine Legenden, was heisst "etwas langsamer"? Spürbar??

Jep, siehe Java3D, man sagt zwar das das fuer Java recht schnell sein soll, kannst aber in die Tonne kloppen, ein schnelles ActionSpiel ist mit heutiger Rechnerperformence undenkbar.
Schon, aber es geht hier nicht um ein Framework, sondern um die VM selbst. Das Potential für ein 3D-Shooter hätte Java schon, nur müsste man dafür mal eine eigene, spezialisierte Engine (was ja genau das Gegenteil von Java3D wäre) schreiben. Aber da fehlt es heutzutage an Experten und an Geld.

MPW hat gesagt.:
Bleiglanz hat gesagt.:
je nachdem was man will kann man sich auch Benchmarks bauen, bei denen Java schneller als C/C++ ist, kein Problem.

Hm, gib mal ein Beispiel, das interessiert mich jetzt wirklich mal...
Z.b. hier. Wie vertrauenswürde die Seite ist, kann ich nicht sagen.

Edit: achja, zum JIT-Compiler...
Ein JIT-Compiler generiert naturgemäss schnelleren Code als ein normaler Compiler. Schliesslich haben sie einfach mehr Informationen über das Programm, das OS, die Hardware... kannst du hier nachlesen.
 

MPW

Top Contributor
Beni hat gesagt.:
MPW hat gesagt.:
Bleiglanz hat gesagt.:
je nachdem was man will kann man sich auch Benchmarks bauen, bei denen Java schneller als C/C++ ist, kein Problem.

Hm, gib mal ein Beispiel, das interessiert mich jetzt wirklich mal...
Z.b. hier. Wie vertrauenswürde die Seite ist, kann ich nicht sagen.

Naja, die ClientJVM ist aber schon ziemlich schlecht weggekommen, nur die ServerJVM scheint recht schnell zu sein. Naja ist allgemein veraltet, da es ja schon laengst 1.5 gibt. Aber ich hab das auch schonmal gehoert, dass Java schneller als C++ sein soll, habe nur noch nicht so ganz kapiert, was genau man dafuer tun muss;-)
 
B

Beni

Gast
Eigentlich nich viel MPV: gute Algorithmen anwenden, Buffered-Streams verwenden, nicht an jeder Ecke neue Objekte anlegen (Speicher muss alloziert werden, der GC muss später aufräumen...), keine Speicherlecks programmieren (sonst wird herumgeswapt), die Geschwindigkeit von GUIs mit Multithreading subjektiv erhöhen (der User meint es sei schneller, in Wirklichkeit verliert man ein bisschen Performace durch den Overhead der verschiedenen Threads).

Also nichts, was nicht selbstverständlich sein sollte :wink:
 

meez

Top Contributor
btw. Gab es nicht mal ein Opensource Prog, welches ein .exe erzeugt, dass sich selber den Pfad zu einer geeigneten VM auf der Maschine sucht, und dann meinen Hack started?
Wie hiess das nochmal ???:L
(Ja ich weiss es gibt eine Suchfunktion, aber ich bin zu faul dazu)
 

MPW

Top Contributor
Beni hat gesagt.:
Eigentlich nich viel MPV: gute Algorithmen anwenden, Buffered-Streams verwenden, nicht an jeder Ecke neue Objekte anlegen (Speicher muss alloziert werden, der GC muss später aufräumen...), keine Speicherlecks programmieren (sonst wird herumgeswapt), die Geschwindigkeit von GUIs mit Multithreading subjektiv erhöhen (der User meint es sei schneller, in Wirklichkeit verliert man ein bisschen Performace durch den Overhead der verschiedenen Threads).

Also nichts, was nicht selbstverständlich sein sollte :wink:

heisse uebrigens MPW mit W nicht mit V

Hm, wie du aber in dem anderen Link sehen kannst, hilft uns das nicht viel, da die JVM doch recht schlecht weggekommen ist(zumindest die ClientJVM)

@meez, gegen Faulheit koennen wir nix machen, tut mir Leid;-)
 
B

Beni

Gast
Sorry mit dem Namen.

Was hindert dich (oder sonstjemand) denn dran, einfach auf die ServerVM umzuschalten *g*. Wenn man mit einem Auto einen neuen Geschwindgkeitrekord fahren will, schaltet man ja auch irgendwann in den zweiten Gang :wink:
 

MPW

Top Contributor
Ja schon, aber du kannst froh sein, wenn der normaler Endanwender ueberhaupt eine JVM hat....
 

sliwalker

Top Contributor
thE_29 hat gesagt.:
C# ist kein Nachmachung ;)

C# ist eine verbesserte C++ und VB Version!

Man kann leicht auf WinApi Dinger zugreifen hat die Syntax von C++ und auch Vorteile von java (was aber Neuerungen in C++ auch haben).

Ich weiß nicht wo Du zwischen C++, VB und C# den Zusammenhang siehst. :?:
Wenn Du möchtest kannst Du mal den Artikel hier lesen.

C# - Java wannabe? (auf englisch)

greetz
SLi
 
R

Roar

Gast
MPW hat gesagt.:
Ja schon, aber du kannst froh sein, wenn der normaler Endanwender ueberhaupt eine JVM hat....
programme, die für otto normalverbraucher geschrieben werden, werden wohl kaum in bedrängnis kommen was die geschwindigkeit betrifft, anders als bei programmen die das wetter für die nächsten 100 jahre berechnen soll oder so ;)

@meez: von den dingern gibs ne ganze menge, schau auch mal in die faq dazu :bae:
 

thE_29

Top Contributor
@sliwalker: uuuu weil jemand einen Artikel verfasst ;)


Java ein C wannabe?? (wie wärs damit?)



Meine Aussage hat sich auf die Syntax (C++) und die allg. leichtere Handhabbarkeit zur WinApi (das hat VB) in C# zu dieser Aussage bewegt!

So!
 

meez

Top Contributor
Roar hat gesagt.:
@meez: von den dingern gibs ne ganze menge, schau auch mal in die faq dazu :bae:

Naja...So riesig ist die FAQ auch wieder nicht :bae: ... die führt einfach noch exe4j auf,
dessen Erfinder aber Bares sehen wollen..;)
 

thE_29

Top Contributor
Also ich habe mir ein Programm geschrieben (dirstat ungefähr so wie kdirstat nur ohne grafische Oberfläche)

So, wenn ich die vom JBuilder aus in eine exe, linux nativ, mac os nativ uwmandeln lasse, so crashed die exe zeitweis wenn ich den kompletten PC durchsuchen lasse!! (mit der Meldung divid to zero oder sowas)

Führe ich die jar Datei aus, so passiert kein fehler!!

Deswegen würde ich nie zu einer exe raten...
 

MPW

Top Contributor
Roar hat gesagt.:
MPW hat gesagt.:
Ja schon, aber du kannst froh sein, wenn der normaler Endanwender ueberhaupt eine JVM hat....
programme, die für otto normalverbraucher geschrieben werden, werden wohl kaum in bedrängnis kommen was die geschwindigkeit betrifft, anders als bei programmen die das wetter für die nächsten 100 jahre berechnen soll oder so ;)

@meez: von den dingern gibs ne ganze menge, schau auch mal in die faq dazu :bae:

Hm, also 3D-Spiele sind eigentlich fuer den (nocht nicht)-Ottonormalerverbraucher, wenn du verstehst was ich meine;-)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben