Java 7 - lambda függvények
bullet Crystal -- 2010-02-10
Ma reggel olvastam a jdk7-dev listán (nem mintha rendszeresen követném, de ezen megakadt a szemem), hogy a Java 7-be végül mégis bekerülnek a lambda függvények/closure-ök, kinek hogy tetszik, az a lényeg hogy lesznek, aki nem tudja mi az az nézzen utána.

Szóval örülünk, igazából nagyon furcsa is volt, hogy ez eddig nem volt rajta a fícsörlistán, úgy tűnik az oracle rámordult a java lang expert group-ra hogy ugyan csak kéne már így 2010-ben. Ez persze részben meglepő, mert nemrég még úgy volt, hogy minél hamarabb (tavasszal) ki akarják adni a java 7-et. Üröm az örömben, hogy így kb. szeptemberre tolódik a release (ami azért elég gáz ha azt nézzük hogy eredetileg 2008 tavaszán kellett volna kijönnie), de azért én összességében örülök.

Hogy milyen lesz a lambda függvények szintaxisa és hogy az hogy fog bájtkódra fordulni, azt még senki nem tudja, elég sok ötlet kering ezzel kapcsolatban és a nagykutyák mind más megoldást pártolnak, na de ehhez is lesz majd JSR meg expert group meg community úgyhogy megoldják szeptemberig gondolom. Szerintem mondjuk elég egyértelmű hogy úgy kell lefordítani mint a névtelen osztályokat, amúgy is azokat használjuk most lambda függvények helyett (pl. swing eseménykezelésnél).

Aminek nem igazán örülök, az az, hogy kivették a Swing JDatePicker komponenst is :( szegény swingbe rájár a rúd így az utóbbi időben, először a Swing Application Frameworköt vették ki, most meg ez. Előbbit még meg is értem, biztos bonyolult téma (mondjuk kb mindent elmond a Swingről hogy a Sun-nál nem bírták alapjaiban sem eldönteni hogy hogy kellene swing programot írni...), utóbbit (JDatePicker) viszont nem igazán értem. Mi olyan veszettül nehéz egy ilyen komponens implementálásában??

Na mindegy, a swing eddig se volt a Java csúcsa, úgyhogy nem dől össze a világ, a closure-öknek meg örülünk nagyon.

További részletek itt, itt, itt és itt
Java Store
bullet Crystal -- 2009-08-29
A Sun (vagy lehet inkább most már az Oracle-ről kellene beszélni) nem éppen a desktop platformjáról híres, de azért megtesz ezt-azt a fejlesztéséért. A Java Store egy olyan online szolgáltatás, melyen keresztül a felhasználók saját fejlesztésű desktop alkalmazásaikat tölthetik fel, és így azokat ingyen vagy pénzért terjeszthetik. Ezek az programok nyilván elsősorban swinges és JavaFX cuccok lesznek, legalábbis ez lenne a cél.

A Java desktop a JavaFX kapcsán már megmutatta, hogy minél jobban alkalmazni akarja a write once - run anywhere elvet, mivel elméletben a JavaFX programok egyaránt futtathatóak telefonon, böngészőben és desktopon. Ezt a hozzáállást a Java Store is követi, ezért különválasztották tőle a back-end szolgáltatását, a Java Warehouse-t. A programozó a warehouse-ba tölti fel az elkészült alkalmazást, a warehouse-hoz pedig különböző kliens-szolgáltatások kapcsolódnak, melyek felületet adnak a végfelhasználónak a letöltéshez - jelenleg az egyetlen ilyen kliens a Java Store. Nyilván az a cél, hogy legyen egy olyan kliens is, ami mondjuk telefonon fut. Más platform most így hirtelen nem is jut eszembe...

A Java Warehouse/Store szolgáltatások jelenleg private beta állapotban futnak, ez azt jelenti, hogy csak USA-beli fejlesztők használhatják, és nekik is meghívót kell hozzá igényelni. Valamikor 2010-ben kerül majd public állapotba a szolgáltatás.

Mikor először néztem utána ennek a Java Store témakörnek, a FAQ-ban egy elég érdekes bekezdést találtam, nagyjából az volt a lényege, hogy a private beta program után az egész szolgáltatás fizetős lesz - magyarul fizetnem kell majd azért, hogy - akár ingyenes - programokat feltöltsek a warehouse-ba. Ez eléggé olyan fafej oracle-s hülyeségnek tűnik, eléggé ki is buktam mikor ezt olvastam - azt még megértem hogy az Oracle nagyobb profitot akar kihozni a Sun-ból, de ne ilyen kretén módon már... Most nem találom ezt a részt, remélem azóta eltűntették, ez is olyan "baki" volt, mint az, mikor a G1 garbage collector használatát fizetőssé akarták tenni.
Java Swing tervezés
bullet Crystal -- 2009-03-08
Gregg Bolinger vetette fel a blogjában a témát, hogy a Swing ugyan egy nagyon jól tervezett és fejlett API és komponenstár grafikus java programok fejlesztéséhez, de valójában nagyon kevés útmutató van a weben ahhoz, hogy hogyan kell valójában egy swing-alapú alkalmazás architektúráját megtervezni. Mitöbb, nagyon kevesen tudják hogy hogy kell csinálni, mivel java programozásban nem mainstream a desktop platform, elég kevés javában írt komoly asztali alkalmazás van.
Ezért a blogger felvetette, hogy kellene egy demó-alkalmazást írni, melynek forrása referenciaként, útmutatóként szolgálhat a programozóknak. Hozzátette, hogy ő maga sem nagyon járatos a témában, így nem érzi magát alkalmasnak arra hogy ő tervezze a programot, és az a nagyobbik baj, hogy eddig még csak egy ember jelentkezett hogy beszállna a projektbe, annak ellenére hogy elég nagy érdeklődést váltott ki a projekt (úgy tűnik, valójában mégis megvan az igény a java fejlesztői közösségben desktop progik fejlesztésére).
A probléma kétségtelenül fennáll, de nem hiszem hogy egy demó-program megírása megfelelő megoldás lenne. Már csak azért sem, mert van már egy ilyen, úgy hívják, hogy NetBeans (igen, a NetBeans-projekt elindításának egyik alapvető oka volt, hogy egy referencia-alkalmazása legyen a swing api-nak) - és a blogger maga írja, hogy az nem megoldás, hogy azt mondjuk az ifjú titánoknak hogy nézzék meg a netbeans forrását, és abból tanulják meg hogy hogy kell swing progit írni. Nem tudom, hogy miért gondolja hogy egy másik referencia-projekt megoldást jelentene, főleg hogy perpill lövése sincs hogy milyen progit kellene írni (én a part 3-nál kommentben javasoltam, hogy egy egyszerű rasztergrafikus program jó lenne). Szerintem jó ebookra lenne szükség a témában, mondjuk "How to design a Swing application? - Definitive Guide" címmel, olyan 600 oldal terjedelemben:), és ezt a Sun-nak illene megírni, sőt alapvetően a swing api tervezőinek. Pontosabban talán a Sun-nak kellett volna már évekkel ezelőtt...
Tényleg nem jó, hogy nincs egy egységes tervezési minta swing-hez (jó, oké, MVC, de hogy azon belül mit hogy az elég homály), bár nekem ez talán még jól is jött: mikor még az ősidőkben (2 éve:)) elkezdtem javázni, akkor először én is egyszerű swing progikat írtam, és így utólag belegondolva jó volt, hogy a swing nem kényszerített rám semmilyen struktúrát, rajtam állt, hogy milyen szerkezetet alakítok ki a kódban, gondolkodásra és alapos tervezésre késztetett, azt hiszem mindenképp sokkal többet fejlődtem így, mint ha valamilyen frameworkre fejlesztettem volna :)
project Scope
bullet Crystal -- 2009-03-07
Az utóbbi napokban elkezdtem írni egy saját project management rendszert. Alapvetően azért kellene, mert általában párhuzamosan több projektem is fut, és jó lenne tudni hogy melyikkel hogy állok - persze ezt megtehetném akár excelben is, de én már csak ilyen vagyok :). Van már sok ingyenes ilyen rendszer, de valahogy még egyik se jött be. Egyrészt gyakorlatilag az összes webes - nekem úgy valahogy jobb lenne ha desktopon tudnám megoldani a dolgot. Másrészt mindegyik sokat tud (csomó fölösleges dolgot) de valami hiányzik belőle ami nekem jó lenne.

Úgyhogy elindult a Scope projekt. Az első verzió egy javás asztali alkalmazás lesz, swing felülettel. Az adatokat JavaDB beágyazott adatbázisban fogja tárolni, egyszerre tetszőleges számú projektet lehet menedzselni, határidőket be lehet állítani, a projekteken belül tetszőleges mélységben alprojekteket lehet létrehozni meg ilyesmi - majd, elvileg. Persze némi agyalás után úgy döntöttem hogy sokkal többet kellene tudnia az eredeti ötletnél (alternatív webes kliens, többféle hálózati kommunikáció stb), de ezeket egyelőre nem fogom implementálni, majd esetleg valamikor később - először legalább annyi legyen kész belőle amire tényleg szükségem van :). Mint mindig, most is a perzisztencia-réteg megtervezésével ill. a DAO réteg (Data Access Object) implementálásával kezdtem, ill. kezd kialakulni a felhasználói felület is. Még az se kizárt hogy egyszer be is fogom fejezni a projektet:P A progtut.net 2.0 egyelőre szünetel...
Java6u10
bullet Crystal -- 2009-03-07
Megérkezett a Java6 update 10 kiadása. Részletek: http://www.javaforum.hu/javaforum/0/news/22/show/java_6_update_10
Bevallom én nem is nagyon tudtam róla hogy ennyi minden kerül bele, azt hittem már a Java7 körül forog a világ :) Mindenesetre nagyon örülök neki, elsősorban az applet gyorsításnak és a javafx-nek. Kicsit furcsa mondjuk hogy a Sun egyszerre két technológiát tol RIA platformon, de nem baj :) Próbaként megnéztem 2 régi appletemet Firefoxban, és tényleg - ha nem is nagyon gyorsan, de épkézláb idő alatt betöltődtek (nem nagy appletek, de az gondolom úgyse számít, csak a vm indulási ideje volt a kritikus). Az szintén jó, hogy a java2d megkapta a hardveres gyorsítást DirectX9-el (kár hogy ilyen csak windowson van magyarul ennek linuxon semmi hatása). A Swingbe jött egy új Look And Feel, a Nimbus. Tényleg szép, bár nekem az alapértelmezett is tetszik :)
Amúgy a RIA aréna alaposan megbolydult az utóbbi napokban: silverlight2, flash10, java6u10 - na kíváncsi leszek hogy ebből mi lesz :)))
ColorMixer
bullet Crystal -- 2009-03-08
Na ha már egyszer felpakoltam a pagert, akkor jöhet ez is :) Tehát róla van szó: [url=http://crystal.progtut.net/wp-content/uploads/2008/04/colormixer.zip" title="colormixer.zip]colormixer.zip[/url].
Ő egy kb 20 perc alatt összebarkácsolt színkeverő progi (természetesen javában íródot:)). Igazából nem azért írtam, mert kedvem volt, hanem mert hiányzott egy ilyen eszköz. CSS-bütykölésnél pl jól jön, ha nem kell a színkoordináták kikeveréséhez elindítani egy rajzprogit. Biztos van már más ilyen progi is, esetleg olyan ami c-ben íródott ezért akár 0.3 sec-cel is gyorsabban indul, mint ez (:P:P:P)
Na mindegy ha kell valakinek akkor használja nyugodtan. Forrást nem zipeltem be de hajlandó vagyok bárkinek odaadni mind a 80 sort :) (keress meg vhol)
döcögős előkészítés
bullet Crystal -- 2009-03-07
Na már lassan egy hete hogy foglalkozom a Crystal2D-vel, de eddig nem sokra jutottam. Ez így kicsit erős hogy egyszerre kellene az ant-vel meg a jpf-fel megismerkednem. Az ant nagyjából már megy, csak elég összetett build.xml-t kéne írni a jpf-hez hogy működjenek a dolgok. Amúgy elhatároztam hogy a Crystal2D-hez amíg lehet nem fogok IDE-t használni, megpróbálok mindent parancssorból megoldani :) kíváncsi vagyok hogy ebből mi lesz :)
Crystal2D - 2. felvonás :)
bullet Crystal -- 2009-03-07
Úgy nagyjából akkor jutott eszembe először, hogy javában rajzprogramot kéne írni, mikor elkezdtem javát tanulni :) Az eredeti ötlet onnan adódott, hogy a Java2D-ben annyi minden benne van, hogy igazából csak össze kellene pakolni a funkcióit egy programba és már kész is lennék. A megvalósítás tavaly tavasszal kezdődött először, persze minden különösebb tervezés nélkül, csak úgy bummbele. Egész szépen alakult a dolog (persze volt közbe más projektek is futottak szóval egy idő után eléggé háttérbe szorult, meg belefutottam egy csúnya swing API hibába ami kicsit elvette a kedvem), mígnem egy jól sikerült Solaris telepítés jóvoltából elszállt az egész program forráskóddal együtt (boldog voltam). Aztán úgy valamikor decemberben megint előtört belőlem a vágy hogy meg kellene írni a Crystal2D-t (ez lenne a progi neve :) ). Most hét elején gondoltam mostmár a tettek mezejére lépek, és elkezdtem komolyabban gondolkodni a dolgon, hogy mit kellene másképp csinálni mint tavaly tavasszal. Arra gondoltam hogy jó lenne ha új verzió kiadása nélkül lehetne funkciókat adni a programhoz, magyarul ha lehetne pluginokat írni hozzá. Egy gyors guglizás után rátaláltam a JPF-re (Java Plugin Framework), és azt hiszem ez meg fog felenli a célnak, úgyhogy most ezt tanulgatom :) Bár ha jól látom szükség lenne hozzá némi Ant ismeretre de lehet hogy meg lehet oldani anélkül is (nem bánnám :) ). Szóval most így áll a projekt (értsd: még mindig sehogy), de szerintem jövő hétre kész lesz a JPF-es proof of concept progi is meg a tervezés is (most lesz olyan de sztem nem fogom túlzásba vinni :) )