160 likes | 256 Views
Explore the extensions and implementations of standard Java API in this comprehensive seminar on programming techniques and tools. Covering libraries, best practices, and practical use cases for effective Java development. Ideal for developers looking to enhance their skills.
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