joi, mai 31, 2007

OpenID

OpenID pare a reprezenta o solutie universala de single sign on. Ce presupune acest lucru? Posibilitatea de a accesa diferite aplicatii Web printr-o singura autentificare. Specifice pentru Java cunosc trei astfel de sisteme: JOSSO (open source), JASIG (open source), CROWD (comercial Atlassian). Pe langa autentificarea unica, aceste trei framework-uri ofera posibilitatea de a gestiona toti userii diverselor aplicatii intr-un singur loc (Central Authentication Service). Sunt utile spre exemplu pentru mai mai multe aplicatii Web (care implementeaza diverse module de business) ruland sub o aceeasi fatada. Dar nu numai.

OpenID ofera mai mult decat framework-urile enuntate. El este un sistem universal de SSO asa cum se si autodefineste:
OpenID is an open, decentralized, free framework for user-centric digital identity.

luni, mai 28, 2007

Google Analytics

Google Analytics va ofera posibilitatea de a urmari accesarile sitului dumneavoastra de catre vizitatori.

Tot ce trebuie sa faceti este sa introduceti un mic fragment de java script in pagina dumneavoastra care va raporta accesarile.

Puteti identifica tarile din care sunteti accesati, ce pagini ale sitului sunt cele mai vizitate, numar de accesari, retelele din care sunteti accesati, numarul de revizitari, etc.

Pare a fi foarte util pentru un magazin virtual, pentru a determina drumul parcurs de clieenti in site. Datele pot fi salvate in diferite formate. Pare a fi o unealta utila pe langa altele oferite de cu atata generozitate de GOOGLE: Toolbar, Notebook, Blogger, Gmail, Picasa, Talk.

miercuri, mai 23, 2007

OSGi - the future

Prima oara am auzit de OSGi cand lucram cu Eclipse. Undeva intre versiunea 3.0 si 3.1 s-a produs migrarea din vechiul sistem de plugin-uri la o implemetare de OSGi, care a devenit cunoscuta sub numele de Equinox. A doaua oara cand am simtit ca e ceva bun cu OSGi a fost atunci cand Spring a ales sa ofere suport pentru OSGi in containerul lor (chiar a devenit un obiectiv important pentru Interface 21). In acest punct am inceput sa-mi pun intrebari. Ce reprezinta de fapt OSGi?

OSGi (Open Services Gateway initiative) este o specificatie intretinuta de OSGi Aliance ajunsa la versiunea 4. Scopul ei este acea de a defini The Dynamic Module System for Java ceea ce inseamna suport pentru module dinamice in Java, adica o inbunatatire a actual-ului sistem de module reprezentat prin clasicele jar-uri. Exista trei implementari open source ale acestei specificatii: Felix(Apache), Equinox(Eclipse), Knopflerfish(MakeWave). Exista si alte implementari comerciale. Referince implementation este Equinox care si-a dovedit calitatile si in
Eclipse. Exista alte incercari de a inbunatati vechile jar-uri, aflate sub umbrela jcp.org dar din nefericire par a fi doar incercari (JSR-227, JSR-291) fata de OSGi care cativa ani de existenta si destule impelementari.

Ce se intelege prin sistem dinamic de module in Java? Este tocmai ce jar-urile nu pot acum sa ofere: posibilitatea de a deploya in runtime in JVM, de a avea versiuni diferite ale aceluiasi modul in runtime, de a cupla modulele aplicatei printr-un numar cat mai mic si bine definit de puncte de interactiune, etc.

A deploya in runtime e posibul doar pentru aplicatiile enterprise (ear, war) prin mecanismele pe care le ofera serverul de aplicatii (JBoss se pricepe bine la asta - are un mecanism de incarcare de clase cu totul deosebit asa cum se vede aici) dar acest lucru nu este posibil cu un jar oarecare. Daca avem doua clase cu acelasi nume (provenite sa zicem din doua jar-uri diferit) doar prima clasa gasita in CLASSPATH va fi incarcata - nu se pune problema de versionare. Asa cum sunt cnstruite jar-urile, avand un jar in CLASSPATH-ul JVM-ului, toate resursele din acel jar pot fi incarcate de ClassLoader-eri - se creaza astfel dependente putenice intre modulele aplicatiei - inposibilitatea plugin-abilitatii.

Este interesant sa fii partas la inceputul unei tehnologii (mai bine zis la maturizarea ei - a inceput in 99). Deci mai bine zis sa fii contemporan cu ea. La fel cum AOP a devenit mijlocul standard de a oferi servicii de middleware, AJAX filosofia care ne-a scapat de refresh-ul pe pagina Web, OSGi va deveni modul standard de a realiza sisteme plugin-abile. Vom vedea.

marți, mai 22, 2007

Who is the boss, JBoss?

JBoss (acum divizie a Red Hat) trebuie urmarit cu atentie pentru ca se misca foarte repede si bine. Ce am retinut din istoria firmei este numele unui personaj ciudat - francez se pare - numit Marc Fleury (de curand a parasit firma imediat ce aceasta a fost preluata de Red Hat). E cel care a avut se pare ambitia de a construi un server de aplicatii open source spargand monopolul marilor corporatii IBM, BEA, Sun, Oracle lideri in acest domeniu. In fapt JCP-ul da specificatii pe care oricine poate sa le implementeze (daca are placerea si bunavointa).

E una din firmele care a promis si a facut soft Open Source Profesionist. A nu se intelege ca neaparat in open source nu sunt implicati bani. In spatele JBoss stau surprinzator fonduri de investitii care in mod normal investesc ca sa castige (se pare ca aceleasi investitori au inceput sa investeasca si in Interface 21 - cei care sunt in spatele framework-ului Spring - normal, tot pentru a castiga bani).

Ce e de remarcat la JBoss sunt oamenii. Fondatorul framework-ului Hibernate - Gavin King - s-a alaturat lor. Ce s-a intamplat de atunci? JBoss a lanseaza un server de aplicatii conform EJB3, o implementare de JPA avand la baza Hibernate. Mai mult, Gavin King pentru a incununa totul s-a apucat de facut Seam un framework care sa lege cele 2 tehnologii la moda (EJB3 si JSF) ducand adnotarile la extrem. Il pot compara cu Rod Johnson cel care a pornit Spring-ul. Si framework-urle lor sunt aproape la acelasi nivel: Seam creaza un ecosistem peste tehnologii standard gen EJB3 si JSF. Spring realizeaza un ecosistem fara cele 2 tehnologii enuntate. Dar cu un acelasi scop: usurinta in dezvoltare.

Dupa parerea mea in acest moment astea sunt si alternativele pe care trebuie mers. Ori EJB3 si JSF legate cu Seam ori Spring. Amandoua ofera acelasi unvers light de dezvoltare. JBoss, spre deosebire de Spring pare a costrui in jurul specificatiilor de la Sun de JEE 5.0. Spring construieste de la 0 pe JSE. Poate pentru ca JBoss au deja un server de aplicatii pe care il promoveaza (dar au si o versiune de EJB3 embedabila in Tomcat spre exemplu). Scopul declarat al Spring-ului a fost tocmai acela de a se feri de serverul de aplicatii (mai bine spus de containerul de EJB). Oricum e clar ca Spring-ul a fost cel care a produs tranformarea in iarna grea din EJB.

JBoss tinde sa fie o platforma de dezvoltare. Are in primul rand serverul de aplicatii, un container usor in genul lui Spring numit JBoss Microcontainer, are implementare de JMS (JBoss Messaging inlocuind neclusterabilul JBossMQ), un cache numit JBoss Cache, JBoss Rules - motor de reguli de bussines, jBPM - o implementare de BPM, multicasting cu JGroups, un container de portlets - JBoss Portal, etc. De curand a pus mana (nu se spune pre clar cum) pe produsele Exadel: un set de componente JSF numit RichFaces, Ajax4JSF - un framework care aduce Ajax in JSF fara Java Script, si IDE-ul de la Exadel (o implementare in Eclipse cu suport pentru JSF - nteresant suportul pentru facelets) care o sa fie lansat in curand (vara 2007) sub numele Red Hat Developer Studio si va ingloba toate toate unelte Eclipse ale JBoss-ului. Kito Mann explica mai multe.

Deci intr-un fel sau altul JBoss (padon... Red Hat) are in maini tot felul de bunatati pe care sunt sigur ca le va exploata cu succes. De ce i-au luat Red Hat? Pentru ca au nevoie de middleware pe Linux. Linux si Java par a deveni pieteni buni (se stie ca pana acum din cauza licentelor de la Sun, Linux-ul nu venea cu compilatorul si JRE-ul de la Sun). Lucrurile se schimba, Sun scotandu-si uneltele sub licente cu adevarat Open Source. Eu deja mi-am instalat UBUNTU (deocamdata in VMWare).

joi, mai 10, 2007

E un sentiment placut sa fii alaturi de cei MARI.

Viitorul limbajului Java depinde de Sun dar se amensteca cu viitorul unor monstri precum Oracle, IBM (cateodata imi pare rau cand ma gandesc ca Microsoft evolueaza intr-un univers paralel – oare unde ar fi fost Java daca …). Unul din sefii Oracle prezinta viziunea acestei companii, viziune in care Java joaca un rol foarte important. Il puteti urmari aici.

In continuare prezint un sumar al celor spuse iar la final sumarul prezentat chiar de vorbitor (in engleza).

Perspectivele pentru Oracle in partea de programare par a fi urmatoarele:

  1. Suport in partea de middleware pentru EJB3 (session beans si messages driven beans) si pentru noul API standard pentru persistenta numit JPA (entity beans din EJB3).
  2. Via EJB3 se ofera suport pentru cele doua paradigme:
    • request/reply – service oriented design pattern style – SOA (expunere de servicii - session bens, webservices)
    • publish/subscribe - event driven style – EDA (cozi de mesaje – implementari de JMS, eventual message driven beans drept listeneri)
  3. Suport in partea de prezentare pentru JSF. Suport pentru AJAX si DHTML integrat in JSF plus randare spre clienti mobili. Intr-un cuvant clienti bogati si/sau mobili (in JSF ambele aspecte sunt rezolvate prin constructia framework-ului)
  4. Suport pentru orchestrare de servicii via BPEL pentru interactiunea intre serviciile oferite de diverse sisteme. S-a enuntat si support pentru sisteme de workflow care implica interactiunea umana – probabil se refera la BPM.
  5. Suport pentru containere usoare – in special Spring (Interface 21) si mai ales pentru modularizarea sistemelor via OSGI. Spring ofera deja integrare cu diverse implementari ale OSGI.
  6. Au achizitionat Tangosol Coherence cei care detineau un renumit system de cache distribuit (commercial din pacate). Si-au asigurat partea de caching distribuit pentru clustere peste servere de aplicatii (in rack-urile de servere de baze de date probabil deja sunt stapani).

So, in summary, from a programming model point of view, we believe there are three important trends. The combination of AJAX, JavaServer Faces and Web Tool to provide a much richer model for users to access applications and work with each other. Second, the programming model with the emergence of lightweight containers, OSGi and the Java Persistence API providing a much simpler model to build business logic and deploy them on lightweight containers or modular containers. Third, the combination of grid computing technology for both compute grids as well as data grids and our acquisition of Tangosol provides us an operational fabric to support very, very high scalability and transactional applications using that are built to this programming model.

Thomas Kurian is Senior Vice President of Development for Oracle middleware platform products, including Oracle Application Server and development tools.