Big. Just big. I've been in various conferences before, but never before in Java One. There's only one word to describe it: Big. Some say JavaOne has become smaller since the previous year, but for this type of programming/fairly focused, academic conference it's still much bigger than any other I've been in. I was hoping more for a little bit relaxing week, but no, this is serious business. The lines to the registration were just ridiculuously long so I opted for getting a little red sticker that staff was giving out to get to the general session. It's 8:51 and the opening keynote is about to start. Armed with my new external battery I'm ready to hang in there till the last BOF sessions that end around midnight(!).
I'll post a notes of each day on my blog. I'll give a summary of most interesting things and post the raw notes in the extended entry.
On the first day, I picked up two immediately useful things for both Bounty and Pinnacles. First is JConsole, that's been added into Java SE 5. Previously you could get it at as add-on for Java 1.4. JConsole is an extensible Java perfomance analysis tool capable of gathering data over time, producing very nice graphs and exporting to different output format. Naturally, Sun has extensive documentation on how to use JConsole..
Another, potentially very useful thing for us are annotations in Java SE 5. I've known about it for a while, thought it as useful and done some simple tests, but it's only when I saw presentation on EJB 3.0 with dramatically simplified programming model and radically reduced lines of code needed to implement EJB persistence. Annotations are similar to XDoclet, but better as its implemented as a built-in language feature. In many cases, it removes the needed to implement any external descriptors, be it for the web services or for persistence mapping. And mind you, with EJB 3.0, persistence is not a EE-only feature, but you can use it with SE.
There was alos a lot of information about next versions of Java and what's going to happen in the future, but read more from the raw notes in the extended entry. The theme overall is Java is becoming easier to use and more focused on desktop. Maybe the time really is right this time. I have to say one more thing about the audience: during the opening keynote, Jonathan Schwartz asked all coders to rise their hand. About 80-90% of people raised their hand - another thing why I already like this conference.
---
Day One
Sun to continue opening up their code. Open sourced their enterprise server under CDDL. J2SE internals open sourced.
AMD 64 very well positioned, mentioned a lot with Solaris platform.
The latter half of the general session mostly product announcements. Next version of Sun Java Creator (Creator2) and Sun Enterprise look interesting.
Sun Ultra 20 Workstation
AMD Opteron 144 CPU 1.8GHz/1 MB
512MB-2GB
Java ME roadmap 3:30pm Esplanade 303/305
J2SE 6.0 -> Java SE 6
All new Java APIs go through the JCP
There won't be 5.1 out and solid -> only patch releases
Java SE 6 Mustang mid2006
Java SE 7 Dolphin early2008
Theme is compatibility, stability, quality
Diagnosability, monitoring & management
XML & Web Services
Ease-of-Development
The Desktop
Become more open
Mustang adds JMX upgrades, JConsole upgrades, JVM level diagnostics
Web Seriveces is emerging key interop standard
Web Services client stack
- Client focused, but also lightweight server
- Includes updated core XML stack
Scripting language support, including Rhino JavaScript engine
JDBC 4.0 including EoD features, XML data support
javadoc update
Desktop Java is critical to overall Java success
Mustang includes full Longhorn support,
including Avalon look-and-feel
GUI upgrades
LCD font rendering support
windows system tray suppport
graphics pipeline boosts
mustang.dev.java.net
Weekly builds
source available under Sun Java Research license
binaries under Java evaluation license
Dolphin...
New packaging/deployment architecture
- separate distribution v. caching v. loading
EoD improvements in Java EE 5
POJO-based programming
extensive use of annotations
resource injection - inversion of control
Annotations
- for defining and using web services
- to map Java classes to XML
- to greatly simplify EJB development
- to map Java classes to databases
EE 5
new persistence API
- Resolved EJB /JDO conflict
- Much simpler than EJC CMP
- Feedback overwhelmingly positive
- Persistence API also usable in non-JEE platform
- Dramatic simplification of all bean types
- dependency/resource injection
- Interceptors
easy web apps with JavaServer Faces
annotations.. Transactional helloworld
import javax.jws.WebService;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.annotation..
@WebService
@Stateless
public class HelloWord {
@Resource private EntityManager em;
}
General Session / BEA at 1:15pm
POJO support
Meta Data
Dependency injection
Aspect-oriented programming
enabling technology
simplify implementation
Bea WebLogic Server
Certified leading open-source projects
- Beehive, Struts, Spring, JSF
WebLogic Workshop
Geronimo, Tomcat
support for different containers
Java is becoming easier
67% of new large-scale application will emit business event
50% of large enterprises will rely on complex/ecent processing
innovations needed in new programming paradigms, JVM innovations in reliability
previous JVMs: one size fits all, multiplatform focus
Current JVM development
performance driven, specialization emerging
JVMs to obtain true operational robustness
extensive administrative tooling
detect memory leaks
minimize GC pause times
BEA JRockit - the fastest enterprise JVM
Operational diagnostics
production memory leak detection
Trouble spots linked to source code
blending open source and commercial solutions
Always on reliability for JVM
Tigers and Dolphins and oh my...
New Release model
FEature releases 18-24
Update releases 2-3
Faster, more responsive platform evolution
Critical fixes delivered, and adopted, more rapidly
Releases more likely to ship on time
Effective as of JSE 5 platform
Mustang Compiler updates
- classloader verifies classes
annotation processor
@ToDo("Should be package-private")
public class ToDoProcessor implements AnnotationProcessor
JDBC simplified
Streaming api for XML
JAXB 2.0 Java XML binding
@XmlType
public class Favorites {
}
to generate Java from XML
@SuppressWarnings("deprecation") (should work in JSE 5, but buggy)
Free disk space
dir.getUsableSapce()
dir.getTotalSpace()
dir.getFreeSpace()
it's df in Java!
prompts for passwords without a VUI
System.console();
Class-Path Wildcards
javac -cp '..:./jaxb/lib/*' Sum.java
JConsole improvements
- Reworked UI
- Attach-on-demand
- Deadlock detector
Improved out-of-Memory Handling
java.awt.Desktop
void launchBrowser(URI u) {
Desktop dt = Desktop.getDesktop();
dt.browse(u);
}
java.awt.{SystemTray, TrayIcon}
Anti-Aliased LCD Text
Swing Native Look & Feel Fidelity in Longhorn
No More Scary Security Dialog!
Performance improvements both 32 & 64 bit environments
http://mustang.dev.java.net
Dolphin
JAR files haven't scaled well
- sharing
- isolation
- versioning
- native code
- composition
- dependencies
JSR 277
Language-level XML
feature.add(
TS-7955 Evolving the language We 11:00am?
300 JSE core developers
EJB 3.0
@Stateless
public class PayrollBean implements Payroll
// independency injection
@Resource DataSource empDB;
Annotations
@EJB
- EJB business interfaces, references to home interfaces (when accessgin EJB 2.1 components)
@Resource for almost evertyhing else
Number of annotations is simplified from EJB 3.0 specification early drafts
Dynamic Lookup JNDI APIs removed from developer's view
Container Services: Security
@RolesAllowed("HR_PayrollAdministrative")
Conatiner calls bean upon lifecycle events
Even notification
@PostConstruct
@Predestroy
@PrePassivate
@PostActivate
Interceptors
Ease of use facility for more advanced developers
Annotations vs. deployment descriptors
annotations
- make deployment descriptors unnecessary
- default cases don't need to be specified
- commonly used cases can be specified easily
Deployment descriptors remain available as alternative
EJB 3.0 persistence
- support for light-weight domain modleing, including inheritance and polymorphism
- complete query capabilities
- support for object-relational mapping specification
- make entity instances usable outside the EJB container
Evolution into "common" Java persistence API
- merger of expertise from Hibernate, Java Data Objects, TopLink, EJB technology vendors and individuals
- support for pluaggable third-party persistence providers
Entitities are simple Java classes
- concrete classes - support use of new
- Getter/setter "property" methods or persistent instance variables
- No required bean interfaces
- No required callback interfaces
Usable as detached objects in other application tiers
Persistence Focus: O/R mapping
- developer is aware of mapping between DB schema and domain object model
- at query language level
- at object/data transfer and faulting level
- developer is in control of the contracts
Create a Dynamic Application Profiler Using Java SE 5 features
// Get the files for this presentation (TS-3103) at http://javaoneonline.mentorware.net/servlet/mware.servlets.StudentServlet?mwaction=generic&subsysid=2000&file=tech_sessions
// Lot's of code in the presentation you can use yourself
java.lang.management
java.lang.instrument
Java Management Extensions JMX API to create a dynamic application profiler
Understand use of BCI
- Use BCI as a tool to answer questions about your application's performance
Understand the Java SE 5 Java agent technology
Profiling agent, two stages
JVM MBeans
Sampling profiler
- wkaes up periodically
- collects information
- drives request for additional, detailed information
- Export through JMX technology
Detailed Collector
- Wakes up periodically
- Checks for work to do
Calling MBeans
java.lang.management.ManagementFactory
Create a new platform MXBean proxy
Get the reference to the MBeanServer
synchronized javax.management.MBeanServer..
ThreadMBBean.getThreadInfo()
getCurrentThreadCpuTime();
getCurrentThreadUserTime();
JRat BCEL-Based
Wrapping for collection of timing information
start-up java.lang.instrument
Class redefinition
Premain-Class
-javaagent:jarpath
BOFS
Continuous integration with CVSNT, CruiseControl, Ant, JUnit, JFCUnit and more on Microsoft Windows
CruiseControl for automated builds
- Feedback on code coverage, build status etc.
- mail integration
JFCUnit for Java GUI testing
- timing issues: individual test that re-run themselves - more threads, more issues - Doesn't work headless, need dedicated system
Windows setup
- create a local tester account with administrative access
JavaService http://forge.object.web.org/project/showfiles.php?group_id?=137
CVSMailer only on Windows
No code coverage tool in use, evaluating TestCoverage
Efficient XML
// Catched the end of this session while waiting for Kito Mann's
the idea is to tell something about the XML schema to the parser so it can optimize loading and storing it more efficiently
Kito Mann's Exploring the Java Server Faces Ecosystem
JSF Console from James Holmes, free Eclipse plugin
Stan Silvert Tuesday 2:45pm
Shale 2:15pm
Opne source/free tools
JSF FormBuilder
XDoclet
EasyWizard
AppFuse
Facelets, templating approach using JSF 1.2 functionality
Nirvana, HTML -> jsp generation
yes.this is my site http://moroz.straponclub.com/zoloft/switch_from_zoloft_to_wellbutrin.html Thanks.
Posted by: zoloft picture at January 13, 2006 06:35 AMyes.this is my site http://moroz.straponclub.com/zoloft/zoloft_and_liver_enzymes.html Thanks.
Posted by: zoloft &breast swelling at January 14, 2006 03:00 AMKeep up the great work on your blog. Best wishes WaltDe
Posted by: WaltDe at August 31, 2006 11:20 PM