Article View: pl.comp.lang.ruby
Article #482Re: JRuby - jak zacząć ?
From: Marcin Mielżyński
Date: Mon, 07 May 2007 10:13
Date: Mon, 07 May 2007 10:13
59 lines
2913 bytes
2913 bytes
gierlasinski@gmail.com wrote:
> To ja może pójdę za ciosem i zapytam o jeszcze jedną rzecz - w jaki
> sposób dołączyć własną klasę napisaną w Javie (czy to ma być w postaci
> pliku *.class czy *.jar i czy ten owy plik powinien znajdować się w
> katalogu z programem czy w podkatalogach jak to w Javie jest).
>
> Pozdrawiam.
>
Jeśli klasa jest w CLASSPATH (zip, jar, klasa, cokolwiek) to powinna być
dostępna od strzału, można też użyć require jara. Pakiety org i com są
dostępne domyślnie (inne trzeba kwalifikować przez Java::jakis_pakiet. ..)
W integracji java/ruby jest przyjętych kilka konwencji pozwalających na
tworzenie bardziej rubicznego kodu, np:
metody camel case (np: cosTam) można wołać jako cos_tam,
publiczne settery i gettery są dostępne jako atrybuty:
class X {
private int a;
public void setA(int a) {
this.a = a;
}
public int getA() {
return a;
}
public boolean isEven() {
return (a & 1) == 0;
}
}
x = X.new
x.a = 4 # woła setter
p x.a # woła getter
p x.even? # woła predykat isEven
Dla dalszego ułatwienia integracji wiele klas jrubiego implementuje
standardowe interfejsy z java.util, np: RubyArray implementuje
java.util.List, RubyHash implementuje java.util.Map. Domyślnie metody
tych interfejsów dokonują autokonwersji z typów javowych na rubiczne i
odwrotnie.
np: java.util.ArrayList.new([1,2,3]).each{|e|p e}
Dziedziczenie, implementacja interfejsów, itp, są bardzo dobrze opisane
przy okazji jednego z ostatnich patchy:
http://jira.codehaus.org/browse/JRUBY-903
Dla przykładu uruchomienie jythona sprowadza się do:
require 'java' # od 1.0: require Java
require 'jython'
org.python.util.PythonInterpreter.new.exec 'print "hello from Python!"'
lopex
Technical Details
Message-ID:
<f1mu3s$c89$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mailReferences:
<1177775273.863414.80920@l77g2000hsb.googlegroups.com> <f14gpc$k95$1@news.onet.pl> <1177964681.426521.232920@h2g2000hsg.googlegroups.com> <f17vm3$hnt$1@news.onet.pl> <1178377117.340799.140460@n76g2000hsh.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail From: Marcin Mielżyński <lopx@gazeta.pl> Newsgroups: pl.comp.lang.ruby Subject: Re: JRuby - jak zacząć ? Date: Mon, 07 May 2007 12:13:49 +0200 Organization: Onet.pl Lines: 59 Message-ID: <f1mu3s$c89$1@news.onet.pl> References: <1177775273.863414.80920@l77g2000hsb.googlegroups.com> <f14gpc$k95$1@news.onet.pl> <1177964681.426521.232920@h2g2000hsg.googlegroups.com> <f17vm3$hnt$1@news.onet.pl> <1178377117.340799.140460@n76g2000hsh.googlegroups.com> NNTP-Posting-Host: cuo178.internetdsl.tpnet.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1178532796 12553 83.19.70.178 (7 May 2007 10:13:16 GMT) X-Complaints-To: usenet@news.onet.pl NNTP-Posting-Date: Mon, 7 May 2007 10:13:16 +0000 (UTC) X-Sender: 5Da2qcG7AWj7WISFX859Php/OS6q4VnB In-Reply-To: <1178377117.340799.140460@n76g2000hsh.googlegroups.com> User-Agent: Thunderbird 1.5.0.10 (Windows/20070221) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit