Motto konferencji: Miłośnicy Java dla miłośników Java aka Ciekawie o Javie.
Podczas 1-dniowej sobotniej konferencji zaprezentowanych zostanie wiele różnych technologii javowych i szkieletów aplikacyjnych. Z 4 panelami, każdy z 3-4 prezentacjami pragniemy, aby konferencja była ciekawa technologicznie oraz odzwierciedlała nasze własne, lokalne doświadczenia z Javą. JAVArsovia 2008 to idealne miejsce, aby spotkać się z innymi praktykami technologii, nawiązać kontakty, porozmawiać o bieżących problemach (technologicznych) i poznać nowe narzędzia, które usprawnią Twoje projekty. Sądzimy, że udział w konferencji JAVArsovia 2008 pozwoli każdemu popróbować się z nowościami technologicznymi lub zgłębić już poznane.
Wstęp wolny! Dobra zabawa gwarantowana!
Rejestracja na konferencję jest bezpłatna acz obowiązkowa i trwa do 29 maja! Na zakończenie konferencji zaplanowane jest spotkanie podsumowujące JAVArsovię na Polach Mokotowskich. Liczba miejsc ograniczona, więc czym wcześniej się zarejestrujesz, tym większa szansa na udział w niej.
Poprzednia edycja JAVArsovia 2007 była prawdziwym hitem czerwca 2007 w Polsce i teraz na pewno również nim będzie. Mamy nadzieję zorganizować największą i najbardziej huczną konferencję Java w Polsce w 2008. Bądź jej częścią! Miłośnicy Java już czekają na Ciebie…
Zapraszam w imieniu Kapituły JAVArsovii 2008 i grupy Warszawa JUG!
Mój poprzedni słownikowy widget dla iGoogle odniósł duży sukces. Dostawałem maile od ludzi, którzy zaadaptowali słownik dla iGoogle do Opery, Firefoksa, a nawet do Dashboarda (poprzez WebClip). Ponieważ sam jestem użytkownikiem Maka, postanowiłem napisać widget dedykowany dla Dashboard. Moim zdaniem wygląda on o niebo lepiej niż swój poprzednik dla iGoogle.
Moje wrażenia programistyczne są bardzo miłe. Wykorzystywałem do tego środowisko Dashcode, które miało swoją premierę wraz z Leopardem. Nie jest ono zbyt rozbudowane, ale bardzo dobrze się sprawdza dla małych widgetów. Trzeba dodać, że ma bogatą bibliotekę komponentów, które znacząco ułatwiają pracę. Słownik tak samo jak swój poprzednik bazuje na dict.pl.
[05-10-2006] ulepszone komunikaty błędów oraz w słowniku nie ma szukanego tłumaczenia,
dzięki Pawłowi Wrzeszczowi udało mi się wyeliminować mały błąd pod MacOSem 10.4,
owiecc zasugerował, żeby nowe wyszukiwanie było przewinięte, tj. po wpisaniu hasła owca i przewinięciu wyników na dół, a następnie po wpisaniu hasła krowa wyniki nie powinny także być przewinięte na dół,
kiedy nastąpi błąd spowodowany brakiem dostępu do Internetu lub dict.pl nie będzie chwilowo działał, pojawi się odpowiednia wiadomość.
Posted by wiktor on May 9, 2008 in java, jruby, ruby
W poprzednim poście opisywałem proces instalacji JRuby’iego tak, żeby korzystanie z niego było proste. Czas wziąć na warsztat integrację Ruby’iego z Javą i odwrotnie.
Ruby rozumie Javę
Kiedy JRuby interpretuje skrypt Ruby’iego to mogą tam być używane wszystkie klasy Javowe. Chcemy, żeby skrypt korzystał z naszej wcześniej utworzonej biblioteki w Javie? Nie ma problemu, dołączamy ją do CLASSPATH i możemy z poziomu Ruby’iego z niej korzystać. Integracja została przedstawiona na poniższych przykładach. Dołożyłem wszelkich starań, aby komentarze były wyczerpujące.
Uruchommy interakcyjną konsolę JRuby’iego: jruby -S jirb i następnie pobawmy się kodem:
[Ruby]
# Znane z Javy importowanie wygląda standardowo.
# Niestety importowanie z gwiazdką nie działa, więc import javax.swing.* poczęstuje nas błędem.
import javax.swing.JFrame
import javax.swing.JButton
# Składnia Ruby’iego została zachowana dla obiektów Javowych, widać to w tworzeniu nowego egzemplarza JFrame
# Warto zauważyć, że nawiasy są nieobowiązkowe. Poniższe wywołanie jest równoznaczne z JFrame.new(“…”)
frame = JFrame.new “Ruby swinguje z Java”
# Styl kodowania Ruby’iego zostaje zachowany także dla metod. W Javie lubimyTakPisać, a w Ruby’im trochę_inaczej.
# Poniższe wywołanie jest równoważne z frame.setSize(300, 300), które także byłoby poprawne.
frame.set_size 300, 300
# Gettery i settery Javowe są dostępne także w odmianie Ruby’iego.
# Poniższa linijka jest równoważna z frame.setAlwaysOnTop(true), które także byłoby poprawne.
frame.always_on_top = true
button = JButton.new “Nacisnij mnie”
# Blok kodu zostanie w locie przekształcony w klasę implementującą interfejs ActionListener. Niezłe!
# Jest to domyślne zachowanie JRuby’iego, jeśli parametrem jest interfejs z jedną metodą.
# Standardowo w Ruby’im używa się wcięć z 2 spacjami.
button.add_action_listener do |event|
# Przykład getterów ala Ruby. Równoznaczne z event.getSource().setText(“…”), które także jest OK.
event.source.text = “Nie naciskaj mnie ponownie!”
event.source.enabled = false
end
frame.add(button)
frame.show
[/Ruby]
Czas poczęstować Ciebie czytelniku jakimś smakołykiem. Oto on:
[Ruby]
# Rozszerzenie klasy Javowej String o mechanizm missing_method, czyli
# ta metoda zostanie wywołana, jeśli na obiekcie zostanie wywołana metoda, która
# nie została zdeklarowana.
JavaUtilities.extend_proxy “java.lang.String” do
def method_missing(symbol, *args)
puts “Kogo wolasz?”
end
end
Ruby może zostać wpleciony w kod Javy na 3 sposoby:
poprzez Scripting API (wprowadzone z Javą 6, JSR 223, unifikacja silników skryptowych używanych w Javie), szczegóły: https://scripting.dev.java.net,
poprzez Beans Scripting Framework (standard wprowadzany przez Apache Jakarta), szczegóły: http://jakarta.apache.org/bsf,
bezpośrednio odwołując się do interpretera JRuby’iego.
Zajmiemy się tylko pierwszą opcją. Będziemy do tego potrzebowali opakowania silnika JRuby’iego dla javax.script, które znajdziemy tutaj (najlepiej wersję 1.1.3).
Powyższa grafika przedstawia zależności w Java Scripting API. Z naszego kodu będziemy odwoływać się wyłącznie do klas javax.script.*, żądać silnika JRuby’iego (jruby-engine.jar), który z kolei sam już będzie odpowiednio wywoływał interpreter JRuby’iego.
public static void main(String[] args) {
// Od Java Scripting API żądamy silnik JRuby’iego
ScriptEngine rubyEngine = new ScriptEngineManager().getEngineByName(“jruby”);
ScriptContext context = rubyEngine.getContext();
List list = new ArrayList() {{
add(1); add(2); add(3); add(4);
}};
// Do środowiska JRuby’iego dodajemy globalną zmienną list
rubyEngine.put(“list”, list);
// Skrypt Ruby’iego, który będziemy wykonywać
StringBuilder script = new StringBuilder();
script.append(“puts ‘— Ruby —’ “).append(“\n”)
.append(“puts $list.inspect “).append(“\n”)
// JRuby do kolekcji Javowych dodaje typowe metody Ruby’iego dla kolekcji
.append(” $list.each { |item| “)
.append(” puts \”Element #{item}\” “)
.append(” } “).append(“\n”)
.append(” puts \”Suma: #{$list.inject { |sum, i| sum + i }}\” “).append(“\n”)
.append(“\n”)
.append(” $hash = { :ala => :ma, :co => :kota } “).append(“\n”);
Aby uruchomić powyższy kawałek kodu trzeba mieć w CLASSPATH: jruby.jar oraz jruby-engine.jar.
Powyższe przykłady ilustrują, że ludzie pracujący nad JRuby’im wykonali kawał dobrej roboty, żeby łączenie Javy z Ruby’im było bezstresowe dla developerów. Takie połączenie dwóch światów daje nam nowe możliwości: tworzenie mini-języków dla aplikacji Javowych, aplikacje Swingowe w Ruby’im, nie wspominając o Ruby on Rails, a dla Ruby’istów dostępny jest cały ekosystem Javy .