Commons Apache - partea I

Majoritatea frameworkurilor care le folosim au in classpath cateva jar-uri commons-ceva.jar (cum ar fi commons-io.jar, commons-lang.jar, commons-configuration.jar, etc). Jar-urile acestea fac parte la randul lor dintr-un framework si este vorba de frameworkul (hai sa ii zicem framework desi nu e altceva decat un set de componente sau pachete refolosibile) Commons Apache.

Am observat ca sunt destui cei care nu folosesc commons si practic nu fac altceva decat sa reinventeze roti. Folosind commons de la Apache practic ne simplificam munca, scriem cod mai putin si mai bun pentru ca folosim componente deja testate. Dar sa las vorbaria si sa prezint Commons Apache.

Commons Apache e impartit in trei categorii:

  • The Commons Proper - componentele reutilizabile pe care le regasim folosite de alte frameworks si care sunt released
  • The Commons Sandbox - contine proiectul sau workspace-ul unde se face development la aceste componente sau componentele care sunt inca in dezvoltare si nu sunt release
  • The Commons Dormant - componentele care sunt inactive (cele depasite sau obsolete, cele care au fost puse in stand-by, etc)

Cele care ne intereseaza in munca de zi cu zi si cele care ne ajuta sunt cele din Commons Proper:

Attributes Api pentru lucru cu attribute metadata (un exemplu de metadata sunt informatiile stocate impreuna cu fotografiile digitale: tipul aparatului, ziua, ora, timp expunere, etc)
BeanUtils Wrappere peste api-urile Java reflection and introspection APIs. Reduce complexitatea in lucrul cu aceste api-uri.
Betwixt Servicii de mapare intre JavaBeans si XML
Chain Implementare generica a patternului "Chain of Responsibility"
CLI Parser de argumente ce se transmit din linia de comanda
Codec Diversi algoritmi de encoding/decoding (fonetica, base64, URL, etc).
Collections extindere a Java Collections Framework
Configuration pentru citirea sau scrierea din diverse fisiere de configurare sau preferinte in diverse formate (properties, xml, etc)
Daemon Diverse mecanisme de invocare a codului java in still unix-daemon-like
DBCP Servicii pentru connection pooling pentru baze de date
DbUtilsDiverse utils pentru lucrul cu JDBC
Digester XML-to-Java-object mapping utility.
Discovery Tools for locating resources by mapping service/reference names to resource names.
EL Interpretor pentru Expression Language definit de specificatia JSP 2.0
EmailLibrarie pentru trimis email-uri din Java
Exec API pentru executare din Java de procese externe sau pentru lucru cu variabile de environment
FileUploadUpload de fisiere pentru servleti sau applicatii web
IO O colectie de utilitare pentru lucrul cu I/O (de ex copiere de fisiere)
JCI Java Compiler Interface
Jelly XML based scripting and processing engine.
Jexl Expression language which extends the Expression Language of the JSTL.
JXPath Utilitare pentru manipularea Java Beans folosind sintaxa XPath
Lang Adauga functionalitate claselor din pachetul java.lang.
Launcher Lansator de aplicatii Java, independent de platforma sau OS
Logging Wrapper peste diverse frameworks sau api-uri de logare (JDK logging, log4j)
Math Componente matematice si statistice
ModelerOfera mecanisme pentru creearea de Model MBeans compatibile cu specificatia JMX
Net Diverse utilitare de retea si implementari de protocoale
Pool Generic object pooling
Primitives Componenta ce simplifica lucrul cu obiectele care suporta primitivele din Java
Proxy Biblioteca pentru creeare dinamica de proxy-uri(vezi Proxy design pattern)
SCXML Implementeaza specificatia State Chart XML avand scopul de creea si mentine un Java SCXML engine. Capabil de executarea unui state machine definit cu ajutorul unui document SCXML document
Transaction Implementari pentru locks pe mai multe nivele, collectii tranzactionale si acces  tranzactional la fisiere
Validator Framework pentru definirea de validatori si reguli de validari cu ajutorului fisierelor xml.
VFS Componenta Virtual File System pentru tratarea fisierelor, FTP, SMB, ZIP ca si cum ar fi un singur sistem logic de fisiere

Va urma. Soon.

 



 


Posted on July 07, 2008 by Cornel Cozar

Filed under Programming | 1 Comments

windows launcher pentru java

Utilizatorii de windows folosesc executabile. Lor nu le plac scripturile si alte metode de a rula un soft, un program. Asa ca nu le da programe java care nu sunt porniti dintr-un exe.

Ca sa faci un executabil dintr-un program java nu ai decat sa folosesti un tool, un exe care asta stie sa faca: iti incarca programul tau java, main classul tau din jar.

Un tool de genul asta nu face altceva decat sa incarce jvm.dll (implementarea jvm-ul pe windows) si apoi sa apeleze diverse functii din dll-ul asta si sa incarce programul java.

Uite cateva tooluri de genul asta:

winrun4j (merita incercat, detalii si informatii bune)

janel

 

 


Posted on June 17, 2008 by Cornel Cozar

Filed under General | 0 Comments

Care e rezultatul?

Analizati programelul de mai jos si alegeti raspunsul corect. Dar fara sa executati programul.
Dupa ce ati ales raspunsul corect rulati programul si vedeti rezultatul. 

 
public class LongDivision {
    private static final long MILLIS_PER_DAY
        = 24 * 60 * 60 * 1000;
    private static final long MICROS_PER_DAY
        = 24 * 60 * 60 * 1000 * 1000;
    public static void main(String[] args) {
        System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY);
    }
}

(a) 5
(b) 1000
(c) 5000
(d) Throws an exception



Posted on June 13, 2008 by Cornel Cozar

Filed under Fun | 2 Comments

Cum generezi un PDF din Java

Se stie ca in lumea Java se folosesc frameworkuri cam aproape pentru orice ai nevoie sa faci. La fel si pentru generarea de PDF. Evident ca pentru generarea de PDF exista mai multe frameworkuri open source care ofera asa ceva. Dar cel mai folosit in lumea Java pentru generarea de PDF e iText.

Pasii de baza pentru creearea unui document PDF:

Pasul 1: Creeaza o instanta Document:
Document document = new Document();

Pasul 2: Creeaza un Writer (de ex ) caruie i se ataseaza document-ul si il scrie intr-un stream:
PdfWriter.getInstance(document, new FileOutputStream("HelloWorld.pdf"));

Pasul 3: Deshide documentul (e un pas peste care nu se poate sari, iText arunca o exceptie):
document.open();

Pasul 4: Adauga continut la document:
document.add(new Paragraph("Hello World"));

Pasul 5: Inchide documentul
document.close();

De fapt PDFWriterul devine un listener pentru document, si pe masura ce se face document.add, PDFWriterul scrie in streamul primit la constructie.

Mai multe detalii si exemple gasiti pe site la iText: http://www.lowagie.com/iText/

Posted on June 12, 2008 by Cornel Cozar

Filed under Programming | 0 Comments

Stii Java?

Cat de mult crezi ca stii Java?

Am avut ocazia sa cunosc destul de multi programatori Java, de la juniori la seniori, de la pasionati la obligati, si asa mai departe. Majoritatea dintrei ei o sa iti spuna ca stiu Java. Majoritatea se cred buni programatori Java. Dar ce inseamna ca stii Java? Cum te autoevaluezi?

Sa luam putin lucrurile pe rand.

Din perspectiva programatorului a stii Java inseamna in general cei cativa ani (2-3, 4-5, etc) de experienta in proiecte care foloseau la baza limbajul si frameworkuri din lumea Java. Pentru cei mai multi inseamna sa cunosti si sa stii programa folosind tehnologii J2EE.

Din perspectiva firmelor a stii Java inseamna a cunoaste cateva frameworkuri Java si a fi capabil sa dezvolti proiecte folosind acele frameworkuri.

Insa din perspectiva celor pasionati a stii Java inseamna mai mult decat simpla cunoastere a unor informatii despre limbajul si tehnologiile Java. A stii Java implica o anumita filosofie pe care sa o ai si sa o simti, implica o anumita atitudine fata de dezvoltarea de software.

Un programator Java bun, un developer care intr-adevar stie Java va avea intotdeauna o atitudine aristocratica pentru ca el stie ca de fapt un developer bun de Java implica si un analist bun. El mai intai gandeste si razgandeste problema din perspectiva OOP, ba mai mult din perspectiva design patternurilor. Si nu doar atat, va citi din curiozitate surse din API JDK. Si pe langa toate acestea are habar de ce se intampla in lumea Java, cunoaste frameworkuri si alternative ...

Voi ce parere aveti? Ce inseamna sa stii Java?

Posted on June 12, 2008 by Cornel Cozar

Filed under General | 5 Comments