Rozszerzenie standardowego API Javy

16
Rozszerzenie standardowego API Javy Rozszerzenie standardowego API Javy

description

Rozszerzenie standardowego API Javy. Tematy. Wstęp Biblioteki Commons Sprawdzone w boju Przegląd wybranych bibliotek Docs. Commons. HttpClient IO Jelly Jexl JXPath Lang Latka Launcher Logging Math Modeler Net Pool Primitives Resources Transaction Validator VFS. - PowerPoint PPT Presentation

Transcript of Rozszerzenie standardowego API Javy

Page 1: Rozszerzenie standardowego API Javy

Rozszerzenie standardowego API JavyRozszerzenie standardowego API Javy

Page 2: Rozszerzenie standardowego API Javy

2005-11-15 Marcin Stępień Seminarium SSR 2/16

Tematy

• Wstęp• Biblioteki Commons• Sprawdzone w boju• Przegląd wybranych bibliotek• Docs

Page 3: Rozszerzenie standardowego API Javy

2005-11-15 Marcin Stępień Seminarium SSR 3/16

Commons

• Attributes• BeanUtils • Betwixt • Chain• CLI • Codec• Collections• Configuration • Daemon • DBCP• DbUtils• Digester• Discovery• EL• Email• FileUpload

• HttpClient• IO• Jelly • Jexl • JXPath • Lang• Latka • Launcher• Logging• Math • Modeler• Net• Pool• Primitives Resources• Transaction • Validator • VFS

Page 4: Rozszerzenie standardowego API Javy

2005-11-15 Marcin Stępień Seminarium SSR 4/16

Sprawdzone w boju

StrutsHibernateVelocityCactus

Expression Language (EL)

...Spring etc.Sprawdzona implementacja wielu

wzorców projektowych

Page 5: Rozszerzenie standardowego API Javy

2005-11-15 Marcin Stępień Seminarium SSR 5/16

Zakres zastosowań

Kategoria Biblioteka

Web FileUpload, HTTPClient, and Net

XML Betwixt, Digester, Jelly, and JXPath

Utilities BeanUtils, Logging, DBCP, Pool, and Validator

Packages Codec and Modeler

Trivial CLI, Discovery, Lang, and Collections

Page 6: Rozszerzenie standardowego API Javy

2005-11-15 Marcin Stępień Seminarium SSR 6/16

BeanUtils

• Łatwa w użyciu kontrola nad JavaBeans przy użyciu mechanizmu refleksji i introspekcji

• Dynamic Beans • Dynamiczne generowanie JavaBeans• Operacje na kolekcjach JavaBean

DynaBean employee = ...; // Details depend on which // DynaBean implementation you use String firstName = (String) employee.get("firstName"); Address homeAddress = (Address) employee.get("address", "home"); Object subordinate = employee.get("subordinate", 2);

PropertyUtils.getSimpleProperty(Object bean, String name) PropertyUtils.getIndexedProperty(Object bean, String name, int index) PropertyUtils.getMappedProperty(Object bean, String name, String key)

BeanPropertyValueEqualsPredicate predicate = new BeanPropertyValueEqualsPredicate( "activeEmployee", Boolean.FALSE ); CollectionUtils.filter( peopleCollection, predicate );

Page 7: Rozszerzenie standardowego API Javy

2005-11-15 Marcin Stępień Seminarium SSR 7/16

BeanUtils - ResultSetDynaBean

Connection conn = ...; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery ("select account_id, name from customers"); Iterator rows = (new ResultSetDynaClass(rs)).iterator(); while (rows.hasNext()) { DynaBean row = (DynaBean) rows.next(); System.out.println("Account number is " + row.get("account_id") + " and name is " + row.get("name")); } rs.close(); stmt.close();

ResultSet wrapper dla DynaBean

User guide

Page 9: Rozszerzenie standardowego API Javy

2005-11-15 Marcin Stępień Seminarium SSR 9/16

email

• Nadbudowa Java Mail API// Create the email messageHtmlEmail email = new HtmlEmail();email.setHostName("mail.myserver.com");email.addTo("[email protected]", "John Doe");email.setFrom("[email protected]", "Me");email.setSubject("Test email with inline image");

// embed the image and get the content idURL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");String cid = email.embed(url, "Apache logo");

// set the html messageemail.setHtmlMsg("<html>The apache logo - <img

src=\"cid:"+cid+"\"></html>");

// set the alternative messageemail.setTextMsg("Your email client does not support HTML messages");

// send the emailemail.send();

Page 10: Rozszerzenie standardowego API Javy

2005-11-15 Marcin Stępień Seminarium SSR 10/16

Net

• Niskopoziomowa implementacja protokołów internetowych do wykorzystania po stronie klienta– FTP – NNTP – SMTP – POP3 – Telnet – TFTP – Finger – Whois – rexec/rcmd/rlogin – Time (rdate)– Echo – Discard – NTP/SNTP

client = new NNTPClient();

client.connect("aurelia.deine.net");

list = client.listNewsgroups();

if (client.isConnected()) client.disconnect();

Page 11: Rozszerzenie standardowego API Javy

2005-11-15 Marcin Stępień Seminarium SSR 11/16

IO

long freeSpace = FileSystemUtils.freeSpace("C:/");

InputStream in = new URL( "http://jakarta.apache.org" ).openStream(); try { InputStreamReader inR = new InputStreamReader( in ); BufferedReader buf = new BufferedReader( inR ); String line; while ( ( line = buf.readLine() ) != null ) { System.out.println( line ); } } finally { in.close(); }

InputStream in = new URL( "http://jakarta.apache.org" ).openStream(); try { System.out.println( IOUtils.toString( in ) ); } finally { IOUtils.closeQuietly(in); }

Page 12: Rozszerzenie standardowego API Javy

2005-11-15 Marcin Stępień Seminarium SSR 12/16

Launcher

Run.batjava –classpath

ImprezaArtystyczna.jar;swt.jar;jface.jar;runtime.jar;boot.jar;osgi.jar -Djava.library.path=. marcin.imprezaart.OknoMain

Run.shRun .....

Generowanie ścieżek dostępu

Dobór bibliotek

Download bibliotek

Ant task

Uruchomienieaplikacji

Page 13: Rozszerzenie standardowego API Javy

2005-11-15 Marcin Stępień Seminarium SSR 13/16

Math

• Statystyka• Algebra liniowa, rozwiązywanie układów

równań liniowych• Rozkład prawdopodobieństwa• Ułamki• Generowanie losowych ciągów, liczb, ciągów

bezpiecznych kryptograficznie• Liczby zespolone• Analiza matematyczna, szukanie miejsc

zerowych • Zbiory przydatnych funkcji

Page 14: Rozszerzenie standardowego API Javy

2005-11-15 Marcin Stępień Seminarium SSR 14/16

Transactions

• Implementacja Transakcji • Kolekcje z transakcjami• Transakcyjny dostęp do plików• Zamki wielopoziomowe• Wykrywanie zakleszczeń• Wraperry Map (transakcyjny dostęp do kolekcji

implementujących java.util.Map)– TransactionalMapWrapper– OptimisticMapWrapper – PessimisticMapWrapper

• Dobra dokumentacja : ) wrapperydeadlocks

Page 15: Rozszerzenie standardowego API Javy

2005-11-15 Marcin Stępień Seminarium SSR 15/16

Validator

1. Deklaratywna walidacja (xml)2. Validujące metody obiektowe np.

• CreditCardValidator • DateValidator • EmailValidator • Field • Form

3. Również Biblioteka JavaScriptu do ponownego użycia• validateCreditCard.js• validateDate.js• validateEmail.js• validateFloat.js• validateFloatRange.js• validateInteger.js itd...

Page 16: Rozszerzenie standardowego API Javy

2005-11-15 Marcin Stępień Seminarium SSR 16/16

Docs

• Jakarta Commons Online Bookshelf• Jakarta Commons Cookbook • http://www.javaworld.com/• http://jakarta.apache.org/commons/• http://www.devx.com/Java• http://wiki.apache.org/jakarta-commons/

FrontPage