🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.ruby
Article #482

Re: JRuby - jak zacząć ?

#482
From: Marcin Mielżyński
Date: Mon, 07 May 2007 10:13
59 lines
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-mail
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>

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