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

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