Blog from March, 2014

JINQ

Érdekes kezdeményezés a JINQ, amely kombinálja a Lambda expression technológiát az adatbázis lekérdezésekkel.

Nézzük például az alábbi JDBC lekérdezést:

PreparedStatement s = con.prepareStatement("SELECT * "
+ "FROM Customer C "
+ "WHERE C.Name = ? ");
s.setString(1, "Alice");
ResultSet rs = s.executeQuery();

 

E Helyett JINQ használatával az alábbi "lekérdezést" kell megejtenünk:

database.getCustomers().where(
customer -> customer.getName().equals("Alice"));

 

A leírás szerint teljes stream támogatása is van, tehát működnek a filter, a map és a reduce megoldások is:

customers.stream()
   .filter( c -> c.getName().equals("Alice") )
   .map( c -> c.getAddress() );

 

Egy próbát megér... JPA-val kombinálva nagyon jó eszköznek néz ki. (smile)

Megjött a Java 8!

Sok-sok-sok-sok-nagyon sok csúszás után végre itt a Java 8! Igaz, sok hasznos újítás kimaradt ebből a kiadásból (is), mint például a Jigsaw és a G1 GC, de ezért ne legyünk szomorúak, nézzük a listát a nagyobb és jelentősebb újdonságokról:

  • Lambda Expressions – closure támogatás
  • Virtual Extension Methods – alapértelmezett metódusok interfészekben
  • Date & Time API – új dátum és idő API
  • Nashorn JavaScript Engine – JavaScript futtató, a javax.script alatt van az elérhető API
  • Remove the Permanent Generation – végre eltűnt a PermGen terület! (smile)
  • Concurrency Updates – párhuzamos végrehajtáshoz segédletek
  • Remove the Annotation-Processing Tool (apt) – ez fájdalmas lehet, ha építettünk rá (sad)
  • Repeating Annotations – ismételhető annotációk (a lista típusú annotációk helyett vagy mellett)
  • Parallel Array Sorting – párhuzamosított tömb rendezés! (smile)
  • Bulk Data Operations for Collections – a "stream" néven nevezett szűrések bevezetése
  • Base64 Encoding & Decoding – JRE része lett a Base64 enkódolás és dekódoloás
  • Autoconf-Based Build System – OpenJDK fordítási eszköztár
  • Lambda-Form Representation for Method Handles
  • Compact Profiles – A későbbre halasztott modularizáció függősége, ha nem kell a teljes JRE vagy JDK, akkor nem töltődik le vagy nem indul el az egész
  • Prepare for Modularization – Szintén a Jigsaw függősége, leginkább API racionalizálás
  • Leverage CPU Instructions for AES Cryptography – az AES titkosítás épít a hardver lehetőségeire
  • Mechanical Checking of Caller-Sensitive Methods – biztonsági javítás, mellékhatása az lehet, hogy már nem lehet hozzáférni belső osztályokhoz
  • Document JDK API Support and Stability – a com.sun.* osztályok kikerültek az API dokumentációból és valóban nem lehet elérni ezeket
  • Reduce Cache Contention on Specified Fields – VM hatékonyság javító módosítás, leginkább több processzoros környezetre
  • Retire Some Rarely-Used GC Combinations – néhány ritka GC vezérlő beállítás nyugdíjba vonult
  • Enhanced Verification Errors – bájtkód ellenőrzés
  • Reduce Class Metadata Footprint – memória-felhasználás csökkentése
  • Small VM – hordozható és hordható eszközök támogatása
  • Fence Intrinsics – VM kompatibilitási javítás
  • Launch JavaFX Applications – JavaFX javítások
  • Generalized Target-Type Inference – generics javítások
  • Annotations on Java Types – annotációk immár a típusokon is
  • DocTree API – javadoc megjegyzések feldolgozása
  • Add Javadoc to javax.tools – API optimalizálás
  • Access to Parameter Names at Runtime – reflection javítás
  • Enhance javac to Improve Build Speed – fordítási sebesség javítása
  • DocLint – a javadoc stílus ellenőzése
  • Enhance Core Libraries with Lambda – Lambda alapú API az alapvető funkciókra
  • Charset Implementation Improvements – karakterkészletekkel kapcsolatos javítások
  • javax.lang.model Implementation Backed by Core Reflection – reflection javítások
  • Reduce Core-Library Memory Usage – memóriahasználat csökkentés
  • JDBC 4.2 – apró javítások
  • Optimize java.text.DecimalFormat.format – sebesség és használhatósági javítások
  • Statically-Linked JNI Libraries – statikusan linkelt JNI
  • Handle Frequent HashMap Collisions with Balanced Trees – a hash ütközés csökkentés nagyobb HashMap esetén hasznos
  • Improve Locale Data Packaging and Adopt Unicode CLDR Data – runtime javítás
  • BCP 47 Locale Matching – RFC 4647 támogatás
  • Unicode 6.2 – támogatás
  • HTTP URL Permissions – URL szűrés IP szűrés helyett
  • MS-SFU Kerberos 5 Extensions – Kerberos 5 kiterjesztések támogatása
  • TLS Server Name Indication (SNI) Extension – SNI támogatás
  • AEAD CipherSuites – AEAD/GCM támogatás
  • Stronger Algorithms for Password-Based Encryption – PBE támogatás
  • Configurable Secure Random-Number Generation – konfigurálható véletlen szám generátor
  • Enhance the Certificate Revocation-Checking API – tanúsítvány ellenőrzés javítások
  • NSA Suite B Cryptographic Algorithms – támogatás
  • SHA-224 Message Digests – támogatás
  • PKCS#11 Crypto Provider for 64-bit Windows – támogatás
  • Limited doPrivileged – biztonsági javítás
  • Overhaul JKS-JCEKS-PKCS12 Keystores – biztonsági javítás
  • JAXP 1.5: Restrict Fetching of External Resources – biztonsági javítás

 

Az új JDK március negyedikei előzetese már egy ideje letölthető a https://jdk8.java.net/download.html címről, de a mai nap érkezik az első végleges kiadás, amely a http://ww.oracle.com/Java8 címről tölthető le. Aki eddig nem tette volna, gyorsan nézze meg, hogy a saját fejlesztései működnek-e rendesen a Java 8 JRE/JDK esetén is, mivel nemsokára az Oracle elkezdi teríteni a felhasználók felé is! (smile)

A HOUG – a jövő idő megérkezett címmel – három napos konferenciát szervez, amelyen az első (fél) nap ingyenes, és a Java szekcióban az alábbi előadások közül válogathatunk:

  • JavaEE Application Security - Minden, amit az alkalmazásbiztonságról a fejlesztőknek érdemes tudni. – Schaffer Krisztián, security analyst, Cloudbreaker Company
  • JavaSE 8 újdonságok – Elek Márton, DPC Consulting Kft
  • JavaEE 7 újdonságok – Varga Péter, tanácsadó, DPC Consulting Kft.
  • Az Apache Maven élete és halála – Cservenák Tamás, Sonatype // Nexus fejlesztő
  • Continuous Delivery: Problémák és megoldások – Viczián István, vezető fejlesztő, IP Systems
  • Android és JavaEE: légy REST! – Auth Gábor, senior architect

A teljes és részletes program – és jelentkezési felület – az alábbi linken található:

http://konferenciak.advalorem.hu/houg-2014/program

Szinte a Play (illetve akkoriban Android Market) indulása óta siránkoztak a felhasználók és a fejlesztők, hogy magyarországi piacra szánt Android telefonokkal nem lehetett fizetős alkalmazásokat venni, illetve publikálni. Ebből a két korlátozásból a felhasználói oldalit nagyjából három éve rendezte a Google, így lehetővé vált azon alkalmazások elérése, amelyekért pénzt kért a fejlesztő, de hazai fejlesztő – a (sokszor agresszív) reklámokon kívül – nem tudott pénzt keresni az alkalmazásával. 2011 májusától kezdve szinte havonta röppentek fel "biztos forrásból származó" pletykák, hogy nemsokára már a magyarországi fejlesztők is konkrét eladásokból származó pénzhez juthatnak, de ezek rendre hamisnak bizonyultak, egyszerűen csak fejlesztői whisful thinking manifesztálódott. Mi sem bizonyítja jobban a Google remek titoktartását, hogy minden előzmény nélkül pár perce egy olyan levél érkezett a postaládámba, amelyet már évek óta vártam:

We're writing to let you know that beginning March 12 2014 we will be introducing Google Wallet Merchant registration availability for Google Play Developers in Hungary.

És valóban, Magyarország már azon országok között van, amelyekben lehetőség van arra, hogy a fejlesztő fizetős alkalmazást töltsön fel: https://support.google.com/googleplay/android-developer/table/3539140?hl=en

Nagy különbségek nincsenek az ország specifikus Merchant fiókok között, a lényeg az, hogy ez a lehetőség nincs az Android piactérre korlátozva, be tudjuk kötni a Google Wallet megoldást bármilyen webáruház mögé is, így tulajdonképpen bank és pénzügyi csatorna független kereskedők lehetünk és nem kell a – sokszor – nehézkes banki integrációval szenvednünk. A Play kapcsán fontos korlátozás lehet, hogy a minimálisan elkérhető pénz a dollár árfolyamához van kötve, ami tegnap éppen 225 forint volt, ugyanez angliai piacon 0,5 font, ami csak 186 forint, illetve az gazdasági EU területén 0,5 euró, ami 156 forint! A Google – ha kérjük, a forintban megadott összeget átszámolja a többi ország megfelelő pénznemére, de akár kézzel is beállíthatjuk az alkalmazásért vagy az alkalmazáson belüli értékesítésért kért pénzösszeget, mert például más a fizetőképes kereslet Magyarországon és Kanadában...

 Kicsit türelmesebbnek kellett volna lennem, és nem nyitni egy angliai Developer Account-ot, megspóroltam volna 25 dollárt... (smile)