Προς το περιεχόμενο

Java και applications


InDiO

Προτεινόμενες αναρτήσεις

Δημοσ.

Μιας και κάνουμε τόση κουβέντα για την Java, θα ήθελα να μάθω περισσότερα για την δημιουργία ολοκληρωμένων εφαρμογών με τη γλώσσα. Τα προγράμματα που έχω κάνει μέχρι τώρα ήταν ένα μάτσο από .class αρχεία. Πως μπορείς να κάνεις ένα κανονικό application; Δηλαδή ένα standalone προγραμμα. Πάντα εννοείται ότι θα χρειαζεται ο χρήστης την JVM έτσι; Υπάρχει δυνατότητα για compiled προγράμματα που δεν χρειάζονται την JVM(κάτι είχα ακούσει για νέους compilers); Ας πούμε ότι ξεκινούσαμε το project του MP3 manager. Τι θα δίναμε στον "τελικό" χρήστη; καμιά 30αριά κλάσεις;; Οι ερωτήσεις ακούγονται λίγο χαζές, αλλά είναι ένα θέμα που δεν ακουμπούν συνήθως τα βιβλία...

 

ευχαριστώ...

Δημοσ.

<blockquote><font class="small">Quote InDiO:</font><hr> Ας πούμε ότι ξεκινούσαμε το project του MP3 manager. Τι θα δίναμε στον "τελικό" χρήστη; καμιά 30αριά κλάσεις;;<hr /></blockquote>

 

Ένα jar (java archive) αρχείο που το τρέχεις με το να κάνεις διπλό κλικ πάνω του.

Δημοσ.

Νομιζω ο Indio ρωταει για Java Technicalities..αν εχω καταλαβει καλα!

Λοιπον η Java μια 99% Object Oriented Γλωσσα. Τα παντα φιαχνοντε με την δημιουργια κλασεων που ολες μαζι συνιστουν το κωδικα μιας εφαρμογη.Class -> Οbjects και παει λεγοντας.Ακομα καιη δημιουργια GUI inteface πρεπει να γινει ετσι.classes Που περιγραφουν ενα παραθυρο Κλασεις για τα control πανω στο παραθυρο , κλασεις που θα αναλαβουν να διαχεριστουν τα events και παει λεγωντας ξανα!

 

Το πιο απλο java applcation Μπορει να περιγραφτει..στισ παρακατω γραμμες κωδικα!

 

<pre><font class="small">code:</font><hr>

public class MyApplication {

public static void main(String[] args){

System.out.println("I love Java");

}

}

</pre><hr>

 

Μια απλη Java κλαση η οποια εχει to stadar execution Point που δεν ειναι αλλο απο την public static void main μεθοδο.

 

 

Ελπιζω να βοηθησα!

 

 

Δημοσ.

Ναι ρε παιδιά, τα ξέρω αυτά, όμως το MyApplication.class πώς θα το τρέξει ο άσχετος χρήστης που απλά θέλει να εκτελέσει την εφαρμογή; Μόνο με java MyApplication γίνεται; Η με ένα χαζό batch-shell script πρόγραμμα; Δηλαδή, ξεχνάμε τα standard προγράμματα που δουλεύουν με απλή κλήση του ονόματος τους; Πιστεύω αυτό που ρωτάω δεν είναι τόσο παράξενο...

 

Και κάτι άλλο, κάποτε είχατε μιλήσει για compilers για Java με διαφορετική προσσέγγιση, που δημιουργούσαν object code σαν σε προγραμμα C, ώστε να μην χρειάζεται διερμήνευση on the fly από την JVM. Υπάρχει κάτι τέτοιο; Μπορεί να χρησιμοποιηθεί σαν εναλλακτικός τρόπος μεταγλώττισης;

 

Τι παίζει με τον compiler της IBM;;

Δημοσ.

Το application θα εκτελεστει αν εχει εγκαταστησει στο μηχανημα σου εν JVM ( μια εικονικη μηχανη) , και αναλογα αν εχει φορτοθει στο enviroment και το classpath , μπορεις απο commandlind να καλεσεις java ΜyApplication . Αν στο application σου εχει πολλα αλλα Jar Που χρειαζοντε και πρεπει να δηλωσεις τοτε το java MyApplication γινεται λιγο μεγαλυτερο eg java -classpath "c:\this.jar;that.jar" MyApplication java οποτε το βαζεις ολο το command σε ενα bat arxeio και το εκτελεις~!

 

Φυσικα η υπαρχει και η λυση οπου ολα τα class της εφαρμογης τα βαζεις σε ενα jar (φαντασουτο σαν self εχecutable ζιp) το οποιο jar εχει ενα μηχανισμο μεσω ενως αρχειου που ονομαζεται MANIFEST FILE , εκει δηλωνεις τη κυρια κλαση που θες τρεξεις.Το Manifest FILE βρισκεται μεσα στο jar , ειναι μερος του jar.TO MONO που εχει να κανει ο χρηστης σε αυτη την περιπτωση ειναι να κανει διπλο κλικ στο jar και με την προυποθεση οτι υπαρχει JVM στην μηχανη η εφαρμογη θα παιξει!

 

Αυτα!

Δημοσ.

Οσο αναφορα τους compiler που φτηνουν native κωδικα ναι υπαρχουν μερικοι! Βασικα υπαρχει γενικα μεγαλη προσπαθεια απο διαφορους να δημιουργησουν alternative to Javac compilers!

 

δες εδώ

http://www.geocities.com/marcoschmidt.geo/jcomp.html

 

O jikes της IBM ειναι ο πιο διασημος , Oxi δεν κανει native compilation .

Εγψ προσωπικα εχω δει και εχω πειραματιστει με 2 java native compiler ο ενας ηταν για Windowz Exselsior Jet ..θα βρεις το λινκ μεσα στην σελιδα , βασικα καταφερε να κανει compile ena arketa polyploko kai megalo project , αλλα τα αποτελεσματα απο την εκτελεση της εφαρμογης ηταν ασχημα πολυ ασχημα!Επισης μην ξεχνας οτι οταν τα τρεχεις native χανεις το garbage collection , αφου δεν τρεχει VM...και γενικα ειναι πως το λενε παρα φυση στην Java!xexex

 

Αυτος που νομιζω ειναι αξιολογη προσπαθεια ειναι ο ξαδερφος του gcc (ολοι oi Unix και linux fun θα χειροκροτησουν χεχεχχ) .και ονομαζετα gcj .Gnu Java Compiler..Εδωσε πολυ καλα αποτελεσματα..βεβαια ομς δεν απεδειξε καμια ανωτεροτητα σε perfomance σε σχεση με την javac-java λυση!

 

Γενικα πιστευω οτι τετοιες προσπαθειες ειναι καλες..εχουν ενδιαφερον αλλα δεν μπορουν ποτε να ζησουν μεσα στις αναγκες μια σοβαρης δουλειας!Γιατι σχεδον ολες αυτης οι προσπαθειες εχουν αποτυχει να δωσουν αυτο που διαφημιζουν , δηλαδη την native ταχυτητα!Επισης πιστευω anyway σπας το compatibility και ενα απο τα βασικα χαρακτηριστικα της Java!Επισης ολα αυτα τα τρελλα που κανουν αυτοι οι compiler ειναι πολυ συνθετα και αν νιωθεις οτι μερικες φορες ο javac και ο java δουλευουν παραξενα τοτε πιστεψε με τους native θα νιωθεις ακομα πιο ανασφαλης!

 

Αυτα!

Δημοσ.

<blockquote><font class="small">Quote InDiO:</font><hr> Ναι ρε παιδιά, τα ξέρω αυτά, όμως το MyApplication.class πώς θα το τρέξει ο άσχετος χρήστης που απλά θέλει να εκτελέσει την εφαρμογή; Μόνο με java MyApplication γίνεται; Η με ένα χαζό batch-shell script πρόγραμμα; Δηλαδή, ξεχνάμε τα standard προγράμματα που δουλεύουν με απλή κλήση του ονόματος τους; Πιστεύω αυτό που ρωτάω δεν είναι τόσο παράξενο...

<hr /></blockquote>

 

Θα βάλεις το MyApplication.class σε ένα jar αρχείο μαζί με ένα manifest αρχείο (για να δείξει ποια είναι η κλάση με τη βασική μέθοδο) και ο χρήστης θα το τρέξει με το να κάνει διπλό κλικ πάνω του. Τί πιο απλό; Είναι ακριβώς το ίδιο όπως τρέχεις και ένα .exe αρχείο σε Παράθυρα. Αν χρειάζεσαι να κάνεις πιο πολύπλοκα πράγματα τότε μπορείς να δημιουργήσεις ένα .bat (ή .sh αν είσαι σε linux/unix) και να το τρέξεις πάλι είτε με διπλό κλικ είτε με μία απλή κλήση του ονόματός του.

 

Όσο για τα συνηθισμένα προγράμματα που τρέχουνε με μία απλή κλήση του ονόματός τους, ε δεν πιστεύω να μπορείς να τρέχεις ένα MyApplication.exe/MyApplication.bin με το να γράφεις MyApplication και να βαριέσαι να γράψεις java MyApplication; Σιγά τη διαφορά.

Δημοσ.

Edw yparxei ena xrisimo tutorial gia to pws mporeis na kaneis windows executables (.exe) apo java bytecodes (.class). O monos periorismos einai oti se merika paketa o xrhsths prepei na exei egatesthmenh to JRE, h akoma kalytera mono thn JVM.

 

http://www.bysoft.se/sureshot/exej/manual.html

http://www.microsoft.com/java/sdk/

http://www.math.uwaterloo.ca/~elterra/Generating%20.exe%20from%20.class.html

Δημοσ.

μπακάλικη λύση:

 

πάρε ενα free c/cpp compiler πχ. borland 5.5 (8 mb) και φτιάξε ενα .exe που θα κάνει ότι κάνει και το "χαζό batch-shell script πρόγραμμα", δηλ, "java myclass.class"

 

 

Δημοσ.

παντος γενικα δεν μπορω να καταλαβω γιατι σας προβληματιζει τοσο η υπαρξη του .exe. η οχι!Νομιζω ειναι καθαρες οι διαφορες στην πλατφορμα της java..και δεν εχεις ενα .exe αλλα ενα self excutable jar!

 

 

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...