Rozszerzenie standardowego API Javy
description
Transcript of Rozszerzenie standardowego API Javy
![Page 1: Rozszerzenie standardowego API Javy](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/1.jpg)
Rozszerzenie standardowego API JavyRozszerzenie standardowego API Javy
![Page 2: Rozszerzenie standardowego API Javy](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/2.jpg)
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](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/3.jpg)
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](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/4.jpg)
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](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/5.jpg)
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](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/6.jpg)
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](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/7.jpg)
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 8: Rozszerzenie standardowego API Javy](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/8.jpg)
2005-11-15 Marcin Stępień Seminarium SSR 8/16
dbutils
• Pomoc przy kodowaniu JDBC
• BeanProcessor.toBean() • mapColumnsToProperties()
![Page 9: Rozszerzenie standardowego API Javy](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/9.jpg)
2005-11-15 Marcin Stępień Seminarium SSR 9/16
• 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](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/10.jpg)
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](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/11.jpg)
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](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/12.jpg)
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](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/13.jpg)
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](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/14.jpg)
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](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/15.jpg)
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](https://reader036.fdocuments.pl/reader036/viewer/2022062521/5681675d550346895ddc29a8/html5/thumbnails/16.jpg)
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