160 likes | 253 Views
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.
E N D
Tematy • Wstęp • Biblioteki Commons • Sprawdzone w boju • Przegląd wybranych bibliotek • Docs Marcin Stępień Seminarium SSR
Commons • HttpClient • IO • Jelly • Jexl • JXPath • Lang • Latka • Launcher • Logging • Math • Modeler • Net • Pool • Primitives Resources • Transaction • Validator • VFS • Attributes • BeanUtils • Betwixt • Chain • CLI • Codec • Collections • Configuration • Daemon • DBCP • DbUtils • Digester • Discovery • EL • Email • FileUpload Marcin Stępień Seminarium SSR
Sprawdzone w boju Struts Hibernate Velocity Cactus Expression Language (EL) ...Spring etc. Sprawdzona implementacja wielu wzorców projektowych Marcin Stępień Seminarium SSR
Zakres zastosowań Marcin Stępień Seminarium SSR
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 ); Marcin Stępień Seminarium SSR
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 Marcin Stępień Seminarium SSR
dbutils • Pomoc przy kodowaniu JDBC • BeanProcessor.toBean() • mapColumnsToProperties() Marcin Stępień Seminarium SSR
email // Create the email message HtmlEmail email = new HtmlEmail(); email.setHostName("mail.myserver.com"); email.addTo("jdoe@somewhere.org", "John Doe"); email.setFrom("me@apache.org", "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(); • Nadbudowa Java Mail API Marcin Stępień Seminarium SSR
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(); Marcin Stępień Seminarium SSR
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(); } long freeSpace = FileSystemUtils.freeSpace("C:/"); InputStream in = new URL( "http://jakarta.apache.org" ).openStream(); try { System.out.println( IOUtils.toString( in ) ); } finally { IOUtils.closeQuietly(in); } Marcin Stępień Seminarium SSR
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 Download bibliotek Uruchomienie aplikacji Marcin Stępień Seminarium SSR
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 Marcin Stępień Seminarium SSR
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 : ) deadlocks wrappery Marcin Stępień Seminarium SSR
Validator • Deklaratywna walidacja (xml) • Validujące metody obiektowe np. • CreditCardValidator • DateValidator • EmailValidator • Field • Form • Również Biblioteka JavaScriptu do ponownego użycia • validateCreditCard.js • validateDate.js • validateEmail.js • validateFloat.js • validateFloatRange.js • validateInteger.js itd... Marcin Stępień Seminarium SSR
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 Marcin Stępień Seminarium SSR