www.si.pjwstk.edu.pl

Download Report

Transcript www.si.pjwstk.edu.pl

Rozszerzenie standardowego API Javy
Tematy
•
•
•
•
•
2005-11-15
Wstęp
Biblioteki Commons
Sprawdzone w boju
Przegląd wybranych bibliotek
Docs
Marcin Stępień Seminarium SSR
2/16
Commons
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
2005-11-15
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
Marcin Stępień Seminarium SSR
3/16
Sprawdzone w boju
Struts
Hibernate
Velocity
Cactus
Expression Language (EL)
...Spring etc.
Sprawdzona implementacja wielu
wzorców projektowych
2005-11-15
Marcin Stępień Seminarium SSR
4/16
Zakres zastosowań
2005-11-15
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
Marcin Stępień Seminarium SSR
5/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
PropertyUtils.getSimpleProperty(Object bean, String name)
PropertyUtils.getIndexedProperty(Object bean, String name, int index)
PropertyUtils.getMappedProperty(Object bean, String name, String key)
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);
BeanPropertyValueEqualsPredicate predicate =
new BeanPropertyValueEqualsPredicate( "activeEmployee",
Boolean.FALSE );
CollectionUtils.filter( peopleCollection, predicate );
2005-11-15
Marcin Stępień Seminarium SSR
6/16
BeanUtils - ResultSetDynaBean
ResultSet wrapper dla DynaBean
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();
User guide
2005-11-15
Marcin Stępień Seminarium SSR
7/16
dbutils
• Pomoc przy kodowaniu JDBC
• BeanProcessor.toBean()
• mapColumnsToProperties()
2005-11-15
Marcin Stępień Seminarium SSR
8/16
email
• Nadbudowa Java Mail API
// Create the email message
HtmlEmail 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 id
URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");
String cid = email.embed(url, "Apache logo");
// set the html message
email.setHtmlMsg("<html>The apache logo - <img
src=\"cid:"+cid+"\"></html>");
// set the alternative message
email.setTextMsg("Your email client does not support HTML messages");
// send the email
email.send();
2005-11-15
Marcin Stępień Seminarium SSR
9/16
Net
•
Niskopoziomowa implementacja protokołów
internetowych do wykorzystania po stronie
klienta
client = new NNTPClient();
–
–
–
–
–
–
–
–
–
–
–
–
–
2005-11-15
FTP
NNTP
SMTP
POP3
Telnet
TFTP
Finger
Whois
rexec/rcmd/rlogin
Time (rdate)
Echo
Discard
NTP/SNTP
client.connect("aurelia.deine.net");
list = client.listNewsgroups();
if (client.isConnected())
client.disconnect();
Marcin Stępień Seminarium SSR
10/16
IO
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);
}
long freeSpace = FileSystemUtils.freeSpace("C:/");
2005-11-15
Marcin Stępień Seminarium SSR
11/16
Launcher
Run.bat
java –classpath
ImprezaArtystyczna.jar;swt.jar;jface.jar;runtime.jar;boot
.jar;osgi.jar -Djava.library.path=.
marcin.imprezaart.OknoMain
Run.sh
Run .....
Ant task
Generowanie
ścieżek
dostępu
Dobór
bibliotek
Uruchomienie
aplikacji
Download
bibliotek
2005-11-15
Marcin Stępień Seminarium SSR
12/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
2005-11-15
Marcin Stępień Seminarium SSR
13/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 : )
2005-11-15
Marcin Stępień Seminarium SSR
deadlocks
wrappery
14/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
•
•
•
•
•
•
2005-11-15
validateCreditCard.js
validateDate.js
validateEmail.js
validateFloat.js
validateFloatRange.js
validateInteger.js itd...
Marcin Stępień Seminarium SSR
15/16
Docs
•
•
•
•
•
•
2005-11-15
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/jakartacommons/FrontPage
Marcin Stępień Seminarium SSR
16/16