1

Garść linków do debaty o językach dynamicznych i Scali

Posted by wiktor on Jan 24, 2008 in java, ruby, scala

Dziś dość króciutko. Tylko linki, ale za to bardzo smakowite.

  • Can Dynamic Languages Scale?
    Notka na TheServerSide dotycząca niepowodzenia projektu Chandler wywołała bardzo ciekawą dyskusję. Treść niusa nie jest istotna, tylko komentarze. Znajdziemy tam wszystko: obrzucanie się błotem, argumenty ad personam, tezy niczym nie podparte, czyli genialną i kulturalną dyskusję ;) . Uwaga! Występują tam celebryci ze światka developerskiego: Bill Burke i Cedric Beust. Nieprawdaż, że brakuje serwisu pudelek.developers.com? :)
  • Invasion Of The Dynamic Language Weenies
    Dość dobra rozprawa o językach dynamicznych o bardzo prowokacyjnym tytule. Dobra lektura – tylko troszeczkę stronnicza ;) . Warto poświęcić trochę czasu na poczytanie odnośników z linkografii do wpisu.
  • The busy Java developer’s guide to Scala
    Tytuł mówi sam za siebie. Ted Neward, znany gawędziarz na wielu konferencjach, barwnym językiem opisuje pierwsze kroki ze Scalą. Miła czytanka.

 
28

Poznajemy nowe języki: Scala, czyli jak wypisać elementy z listy

Posted by wiktor on Dec 12, 2007 in java, scala

Scala. Co to za język?

  • Scala została sklasyfikowana jako język funkcyjny, obiektowy, wielo-paradygmatyczny (mam nadzieję, że dobrze tłumaczę),
  • statycznie i silnie typowany,
  • obecna implementacja bazuje na JVM, niedługo można się spodziwać implementacji na .NET,
  • tak!, Scala działa na platformie Java, więc ma dostęp do całego ekosystemu bibliotek Javy,
  • nietuzinkową postacią jest sam twórca języka Martin Odersky, który jest współautorem obecnego kompilatora Javy oraz jest współprojektantem obecnych typów generycznych w Javie,
  • jest to młody język programowania i posiada wiele ciekawych własności, o których to będę pisał w kolejnych postach,
  • więcej: Scala na Wikipedii, strona domowa Scali, wywiad z twórcą języka.

OK, wezmę na warsztat prostą czynność: wypisanie elementów z listy.
Kod w Javie byłby następujący:

[Java]
List lista = new ArrayList() {{
add(1); add(2); add(3); add(4);
}};

for (Integer x : lista)
System.out.println(x);

// Można też tak, ale raczej nie bym nie polegał na metodzie toString()
System.out.println(lista.toString());

// lub po prostu:
System.out.println(lista);
[/Java]

Dla odmiany w Ruby’im zrobilibyśmy to tak:

[Ruby]
# tutaj akurat mamy tablicę
lista = %w(1, 2, 3, 4)

# żeby ładnie było to definiujmy println
println = lambda { |x| puts x }

lista.each &println
[/Ruby]

Zobaczmy teraz, jak zrobilibyśmy to w Scali.

[Scala]
val lista = List(1, 2, 3, 4)

lista.foreach((x: Int) => println(x))
[/Scala]

Brzydko… idziemy dalej. Scala jest językiem funkcyjnym, który ma mechanizm currying. Opuśćmy deklarację typu i nawiasy.

[Scala]
lista.foreach(x => println(x))
[/Scala]

Nadal brzydko… idziemy dalej. Co jest argumentem metody foreach? Sygnatura metody jest następująca:

[Scala]
def foreach(f: A => Unit): Unit
[/Scala]

Na potrzebę chwili traktujmy Unit tak samo jak void. Zatem argumentem foreach jest funkcja, która przyjmuje argument A (jakiś nieustalony typ, patrz: currying) i zwraca Unit. Natomiast println jest zdefiniowany tak:

[Scala]
def println(x: Any) = Console.println(x)
[/Scala]

czyli bierze jakiś argument (nadal patrz: currying, funkcje wyższego rzędu) i zwraca Unit. Zatem typy się zgadzają. Zapiszmy to krócej:

[Scala]
lista.foreach(println)
[/Scala]

Już lepiej, ale można jeszcze lepiej :) . Scala ma bardzo fajną własność, którą nigdzie wcześniej nie spotkałem. Mianowicie w Scali technicznie nie ma operatorów. Wyrażenie 1 + 2 jest tożsame z wywołaniem metody 1.+(2). Jeśli metoda przyjmuję tylko jeden parametr to można pominąć nawiasy oraz kropkę. Zatem:

[Scala]
lista foreach println
[/Scala]

Piękny zapis, nieprawdaż? :) A czy twój ulubiony język zrobi to lepiej?

 
6

Netbeans 6 już jest

Posted by wiktor on Dec 7, 2007 in java

Netbeans - świeżutki i cieplutki


Już można pobrać ze strony netbeans.org najnowszą wersję Netbeans. Tym razem w wersji 6. Jest to krok milowy dla rozwoju Netbeans, dlatego że wreszcie staje się on konkurencyjny dla Eclipse i IntelliJ IDEA. Wcześniej nie dało się go w ogóle używać. Edytor dla Javy, czyli najważniejszy jego element, był po prostu niemiłosiernie wolny. Sun słusznie postanowił wpompować w niego dużo pieniędzy i widać tego efekty.

Wybrane najważniejsze rzeczy w Netbeans 6:

  • Nowy, szybszy, bardziej inteligenty edytor dla Javy – wreszcie! Netbeansa wcześniej po prostu się nie dało używać do kodowania w Javie. Był wolny, wolny i jeszcze raz wolny. Obecna szybkość dorównuje Eclipse’owi i IntelliJ. W sumie nie powinniśmy się tym ekscytować, bo w innych środowiskach zintegrowanych była to norma.
  • Wsparcie dla trybu pełnoekranowego (Alt-Shift-Enter lub Command-Shift-Enter na Maku). Mała rzecz a cieszy.
  • Ulepszony diff – czyli kolejne wreszcie! Netbeans małymi kroczkami dogania konkurencję.
    Netbeans diff screenshot
  • Kopiowanie z IntelliJ IDEA, wystarczy zobaczyć poniższe zrzuty ekranu:
    netbeans-generate.png intellij-idea-generate.png
    Netbeans 6 IntelliJ IDEA 7

    Tak, tak… w Netbeans znajdziemy więcej takich rodzynków. To w IntelliJ IDEA znajdziemy innowacyjne pomysły i to ona jest najbardziej zaawansowanym środowiskiem zintegrowanym. Dlatego też uważam, że zapożyczanie pomysłów w Netbeans (można na to patrzeć jako kopiowanie) jest w porządku, bo napędza rynek środowisk zintegrowanych.

  • Ulepszony edytor dla Swinga i Swing Application Framework – Matisse (edytor GUI) od samego początku nie miał sobie równych. Netbeans jest obecnie najlepszym narzędziem dla programistów Swinga. Dlatego cieszy fakt, że jest on nadal udoskonalany. Dodatkowo wsparcie dla Swing Application Framework (zapewnia infrastrukturę dla małych aplikacji Swingowych) i Beans Binding (najogólniej: zapewnia synchronizację pomiędzy właściwościami obiektów) wskazuje, że Sun’owi naprawdę zależy na pobudzeniu Javy dla zastosowań klienckich/desktopowych.
    Netbeans GUI builder
  • …ale nadal trzeba mieć osobno zainstalowane Subversion i wskazać ścieżkę do niego, żeby z niego korzystać. Nie rozumiem, czemu to jest takie trudne, żeby svn był wbudowany w Netbeans. Przecież w innych IDE jest to od dłuższego czasu standardem.
  • Ostatnie i najważniejsze wg mnie. Rewelacyjny edytor dla Ruby’iego i Ruby on Rails. Najważniejsze jego własności to proste refaktoryzacje, naprawdę dobre uzupełnianie kodu, debugger, szablony kodów (ang. Live Code Templates) i podpowiedzi. Warto go wypróbować.
    netbeans ruby, ruby on rails

PS. Brawo dla Jacka Laskowskiego, który jest najaktywniejszym członkiem grupy NetBeans IDE 6.0 Community Acceptance Testing program (NetCAT).

 
4

Notatki z warsztatu “JRuby on Rails”

Posted by wiktor on Nov 18, 2007 in Ruby on Rails, java, jruby, ruby

Dziękuje wszystkim, którzy pojawili się na mojej prezentacji/warsztacie podczas WarsJava. Była ona na prawdę udana, a dyskusja po prezentacji trwała ponad pół godziny! Dziękuje jeszcze raz wszytkim za obecność. Udostępniam poniżej slajdy z prezentacji (poniżej), kod aplikacji stworzonej podczas warsztatu oraz życzenie załączam moje notatki/scenariusz prezentacji.

 
4

Warsztaty Javowe: JRuby on Rails, czyli łączenie Javy i Rubiego

Posted by wiktor on Nov 13, 2007 in Ruby on Rails, java, jruby, ruby

Duke + Ruby + Rails = Java ;)

Już w najbliższą sobotę o godzinie 11:00 będę dawał prezentację “JRuby on Rails, czyli łączenie Javy i Rubiego” na WarsJava – I Warszawskie Warsztaty Javowe organizowane przez Warszawa JUG. Warsztaty będą miały miejsce na MIMUWie. I co najważniejsze: WSTĘP WOLNY :) .

Podczas warsztatów pokażę:

  • jak stworzyć prostą aplikację w Ruby on Rails,
  • jak korzystać z kodu Javy z poziomu Ruby’iego,
  • jak korzystać ze sterowników JDBC do łączenia się z bazą danych,
  • jak integrować stworzoną aplikacją z istniejącą aplikacją JEE (JMS, serwer aplikacji JBoss),
  • jak wdrażać aplikacje oparte o Ruby on Rails.

Zapraszam!

 
6

Po co nam Java? Czyli o tym, co znaczy słowo enterprise, o JVM i o muCommanderze

Posted by wiktor on Oct 5, 2007 in java

“Po co nam ta Java?”, “Ale po co ją stosować, jak w Ruby on Rails mogę to samo zrobić szybciej (czytaj: być bardziej wydajnym)?” – takie pytania koledzy stawiają mi coraz częściej. Odpowiadanie na nie nie jest zadaniem prostym. Przekonanie osoby negatywnie nastawionej, że Java może spokojnie, nie wadząc nikomu żyć w informatycznym ekosystemie – baaaa – nawet uzupełniać go, graniczy z cudem.

Oczywiście nie jestem w stanie dać pełnej odpowiedzi na pytanie “Po co nam Java?”. Nawet do tego nie pretenduję. Poruszę tylko trzy zagadnienia, które będą świadczyć, że jednak po coś nam ta Java jest potrzebna:

  • zastosowania typu enterprise,
  • przenośność platformy Javy (ang. cross-platform), o której się często zapomina (na przykładzie muCommandera),
  • maszyna wirtualna Javy, czyli JVM.

Read more…

 
1

Slajdy z prezentacji na Warszawa JUG

Posted by wiktor on Oct 2, 2007 in java

Tak jak pisałem wcześniej, prezentacja “Integracja JSF + Facelets + Tomahawk + Spring + JPA” odbyła się. Dziękuję wszystkim, którzy się na niej znaleźli. Według mnie była udana, bo pokazała, że łączenie tych technologii jest trudne, problematyczne i przede wszystkim nudne ;) (bo dużo w tym technikali i drobiazgów). Mam nadzieję, że zmusiła chociaż część osób do pomyślenia o alternatywnych sposobach uzyskania tego samego efektu.

Przejrzyj prezentację online:



lub ściągnij na dysk http://www.slideshare.net/wiktor/integracja-jsf-facelets-spring-jpa-tomahawk/download.

 
1

Zapraszam na moją prezentację w ramach Warszawa JUG

Posted by wiktor on Sep 26, 2007 in java

Zapraszam wszystkich na moją prezentację w ramach warszawskiego JUGa. Tytuł prezentacji to “Integracja JSF + Facelets + Spring + JPA + Tomahawk” i będzie on bazował na moim artykule o tej samej nazwie. Wpis ten stał się dość popularny i stąd pomysł na prezentacje. Poniżej więcej szczegółów.

Warszawska Grupa Użytkowników Technologii Java (Warszawa JUG) zaprasza na XVI spotkanie, które odbędzie się w nadchodzący wtorek 2.10.2007 o godzinie 18:00 w sali 4420 na Wydziale MIMUW przy ul. Banacha 2 w Warszawie.

Temat prezentacji: Integracja JSF + Facelets + Spring + JPA + Tomahawk
Prowadzący: Wiktor Gworek

JavaServer Faces (JSF), Tomahawk, Facelets, Spring Framework i Java Persistence (JPA) to technologie, o których miło się czyta. Kiedy jednak przychodzi do rzeczywistych zastosowań, nie ma osoby, która by nie miała problemów z ich integracją. Celem prezentacji będzie zbudowanie prostej aplikacji typu CRUD (Create-Read-Update-Delete) łączącej wszystkie te magiczne technologie w atmosferze dobrej zabawy.

Prezentację poprowadzi Wiktor Gworek, student V roku na MIMUW-ie. Jest entuzjastą życia i nowych technologii. Wiktor uwielbia ładne, radosne programowanie, kunsztowną architekturę oprogramowania oraz czytać RSSy ;) . Z Javą związany jest od dwóch lat, jednak stroni on od monogamii programistycznej. Prowadzi blog Mocna Kawa.

Planowany czas prezentacji to 1,5 godziny z 20-minutową dyskusją. Na zakończenie (około 10 minut) planowana jest dyskusja dotycząca organizacji konferencji WarsJava organizowanej przez Warszawa JUG.

Wstęp wolny

Zapraszam w imieniu Warszawa JUG!

 
24

Integracja JSF + Facelets + Spring + JPA + Tomahawk

Posted by wiktor on Aug 5, 2007 in facelets, java, jpa, jsf, spring

Dość sporo tych Trzy Literowych Skrótów :) . Wszystkie wymienione technologie zostaną połączone w prostej aplikacji typu CRUD.

W tym artykule pokaże jak zintegrować następujące technologie:

  • JavaServer Faces 1.1 – będę wykorzystywał implementację Apache MyFaces – jako warstwa prezentacji,
  • Facelets – są one wspaniałym kompanem dla JSF, będę korzystał tylko z szablonów, choć Facelets mają dużo więcej możliwości,
  • Spring 2 – kontener IoC, będzie on wstrzykiwał beany obsługujące encje JPA (czyli DAO) do JSF (cudowna integracja) oraz obsługiwał transakcje,
  • Java Persistence API – implementacja Toplink – będę wykorzystywał JPA do mapowania obiektowo-relacyjnego,
  • Tomahawk – zestaw komponentów JSF ze stajni Apache.

Do artykułu dołączony jest kod źródłowy całej aplikacji. Można go otworzyć od razu w IntelliJ IDEA, a jeśli używasz innego edytora to musisz jakoś zaimportować projekt :) .

Możesz także przejrzeć pełen kod w subversion pod adresem: http://svn.mocna-kawa.com/jsfcrud/.

Read more…

 
0

Java i wszystko jasne

Posted by wiktor on Aug 2, 2007 in java

Dzisiaj w pracy miła niespodzianka mnie spotkała.

java-kawa-slodycze.jpg

Aż od razu milej na serduszku. Były bardzo smaczne ;) .

Related Posts with Thumbnails

Copyright © 2012 Mocna Kawa All rights reserved. Theme by Laptop Geek.