Παρασκευή, 13 Αυγούστου 2010

JYTHON-another progammers tool!

Διερμηνέας Python από Java. Μπορεί όμως και δημιοyργεί κώδικα για Java!

Τρέξτε τα προγράμματα Python σας παντού!

Με τη βοήθεια της Java. Μια δυναμική γλώσσα όπως η Python οφείλει να έχει επαφή με τη φιλοσοφία "write once, run everywhere", με βάση την οποία σχεδιάστηκε η Java. Η Jython είναι ένας διερμηνέας Python για το JVM. "Σιγά", μπορεί να πείτε, "αφού θα βάλεις τους χρήστες σου να κατεβάσουν διερμηνέα, έχουμε ήδη έναν πιο συνηθισμένο και πιο γρήγορο." Χμ, τι θα λέγατε για απλά αυτόνομα Java jarfiles?

Προσοχή! Νέο υλικό ετοιμάζεται. Δείτε στο τέλος της σελίδας.

Πώς;

Η Jython διαθέτει ένα εργαλείο, το jythonc, προφανώς Jython compiler. Με αυτό μπορείτε να δημιουργήσετε Java bytecode από αρχεία για Python. Συλλέγει τις απαιτήσεις, δημιουργεί πηγαίο κώδικα Java, μεταγλωττίζει. Όλα τα στάδια μπορείτε να τα ελέγξετε.

Πες γεια.

~echo print \"Hello World\!\" > hello.py
~jythonc -c -b hello.jar hello.py
~java -jar hello.jar
Αν όλα γίνουν σωστά, όποιος έχει τη Java, δηλαδή σχεδόν όλοι, μπορεί να τρέξει το αρχείο, ακόμα και με διπλό κλικ.
Λεπτομέρειες:
http://www.jython.org/archive/21/docs/jythonc.html
http://www.jython.org/

Πόσο γρήγορο είναι;

Ας δοκιμάσουμε αυτό. Ας μιλήσει το τερματικό.
~python --version
Python 2.6.4
~jython --version
Jython 2.2.1 on java1.6.0_0
~time python test.py < ./regexdna-input.txt
agggtaaa|tttaccct 0 [cgt]gggtaaa|tttaccc[acg] 3 a[act]ggtaaa|tttacc[agt]t 9 ag[act]gtaaa|tttac[agt]ct 8 agg[act]taaa|ttta[agt]cct 10 aggg[acg]aaa|ttt[cgt]ccct 3 agggt[cgt]aa|tt[acg]accct 4 agggta[cgt]a|t[acg]taccct 3 agggtaa[cgt]|[acg]ttaccct 5

101745
100000
133640

real 0m0.065s
user 0m0.062s
sys 0m0.002s
~time jython test.py < ./regexdna-input.txt
agggtaaa|tttaccct 0 [cgt]gggtaaa|tttaccc[acg] 3 a[act]ggtaaa|tttacc[agt]t 9 ag[act]gtaaa|tttac[agt]ct 8 agg[act]taaa|ttta[agt]cct 10 aggg[acg]aaa|ttt[cgt]ccct 3 agggt[cgt]aa|tt[acg]accct 4 agggta[cgt]a|t[acg]taccct 3 agggtaa[cgt]|[acg]ttaccct 5

101745
100000
133640

real 0m1.455s
user 0m3.005s
sys 0m0.098s
~jythonc -c -jar test.jar test.py
Πληροφορίες...
~time java -server -jar test.jar < regexdna-input.txt
agggtaaa|tttaccct 0 [cgt]gggtaaa|tttaccc[acg] 3 a[act]ggtaaa|tttacc[agt]t 9 ag[act]gtaaa|tttac[agt]ct 8 agg[act]taaa|ttta[agt]cct 10 aggg[acg]aaa|ttt[cgt]ccct 3 agggt[cgt]aa|tt[acg]accct 4 agggta[cgt]a|t[acg]taccct 3 agggtaa[cgt]|[acg]ttaccct 5

101745
100000
133640

real 0m0.809s
user 0m1.194s
sys 0m0.072s

Επιλογικά...

Ας σημειωθεί ότι ο jythonc δεν δημιουργεί "αντίστοιχο" κώδικα Java. Δηλαδή, το Hello World της Python δεν μεταγλωττίζεται στο αντίστοιχο Hello World που θα γράφαμε σε καθαρή Java.

Επίσης, η ομάδα θέλει να αντικαταστήσει τον jythonc. Η έκδοση 2.2.1 της Jython δεν είναι η τελευταία διαθέσιμη. Είναι όμως η τελευταία με υποστήριξη jythonc (όπως επίσης και η τελευτάια διαθέσιμη στο Portage Tree του Gentoo). Δείτε εδώ για λεπτομέρειες.

Και για τους ενδιαφερόμενους, υπάρχει και η JRuby, για τη μοναδική γλώσσα του Matz.
Α.Σ.

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου