<rdf:RDF
    xmlns:s='http://snipsnap.org/rdf/snip-schema#'
    xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
    xml:base='http://bliki.brandonburk.com/snipsnap/rdf'>
    <s:Snip rdf:about='http://bliki.brandonburk.com/snipsnap/rdf#snipsnap-index/JavaOne+2007+Notes'
         s:cUser='brandon'
         s:oUser=''
         s:mUser='brandon'>
        <s:name>snipsnap-index/JavaOne 2007 Notes</s:name>
        <s:content>1 JavaOne 2007, May 8-11, approximately 260 sessions&#xD;&#xA;&#xD;&#xA;1 Tue. May 8 {anchor:Tue. May 8}&#xD;&#xA;1.1 Get in the Driver&apos;s Seat With Java Technology {anchor:Tue. May 8-GS1}&#xD;&#xA;- John Gage - Sun Chief Researcher&#xD;&#xA;-- The Solio - enables &quot;off the grid on the next&quot;&#xD;&#xA;-- Challenge to measure for being carbon neutral&#xD;&#xA;-- Small devices are the &quot;vector&quot; of change for human interaction&#xD;&#xA;- Rich Green - Sun EVP - Software&#xD;&#xA;-- Mobile phones outship PCs 20:1&#xD;&#xA;-- GlassFish now being shipped by 7 companies&#xD;&#xA;-- GlassFish transitioning from Enterprise to Media&#xD;&#xA;-- Martin Harriman - Ericsson VP Marketing &amp; Business Development&#xD;&#xA;-- Sun Java System Communications Application Server&#xD;&#xA;-- Ericsson open sourcing IMS&#xD;&#xA;-- JSR - Java RTS 2\\&#xD;&#xA;-- RT GC\\&#xD;&#xA;-- Useful in finance, telecom, aviation, industrial controls, etc\\&#xD;&#xA;-- javax.realtime.RealtimeThread\\&#xD;&#xA;-- Anna Ewing - NASDAQ CIO\\&#xD;&#xA;-- Trading system runs on Java\\&#xD;&#xA;-- 150,378 TPS\\&#xD;&#xA;-- Java -&gt; RT Java will be a easy migration\\&#xD;&#xA;-- 70% of HD discs are BluRay\\&#xD;&#xA;-- Tom Hallman - Sony Pictures, VP of Operations, Digital Authoring Center\\&#xD;&#xA;-- BDJ allows more dynamic menus than standard definition TV\\&#xD;&#xA;-- NetBeans - +92% YoY\\&#xD;&#xA;-- Whole new modular design editor\\&#xD;&#xA;-- OpenJDK - truly buildable JDK\\&#xD;&#xA;-- New interim governing board, will create constitution\\&#xD;&#xA;-- TCK will be created for compatibility certification\\&#xD;&#xA;-- GPLv2\\&#xD;&#xA;-- Ubuntu packaging Java 6 and NetBeans\\&#xD;&#xA;-- Java SE 6 focusing on faster download and RT\\&#xD;&#xA;-- Java FX family focusing on tools and component for consumer facing apps\\&#xD;&#xA;-- Java FX Script for RIA, aimed at content professionals\\&#xD;&#xA;- James Gosling - Sun Presented\\&#xD;&#xA;-- Chris Oliver credited with creation from Function over Form (F3) idea\\&#xD;&#xA;-- Runs on every JSE unmodified\\&#xD;&#xA;-- Java FX Mobile - Power of Java SE\\&#xD;&#xA;-- &quot;complete desktop scale environment to mobile&quot;\\&#xD;&#xA;-- Splitting the software/OS from mobile hardware\\&#xD;&#xA;-- Nandini Ramani - Sun FX Core Team - Demonstration\\&#xD;&#xA;-- Runs all SE, ME, and FX Script\\&#xD;&#xA;-- Marco Boerries - Yahoo! SVP\\&#xD;&#xA;-- Demonstrates Yahoo GO! - 200 Million phones\\&#xD;&#xA;-- Open platform for developing  (Java FX and ME)\\&#xD;&#xA;- Jonathan Shwartz - Sun CEO and President\\&#xD;&#xA;-- blah blah blah\\&#xD;&#xA;-- Dr. Djibril Diallo - UN\\&#xD;&#xA;-- &quot;Engineers without Borders&quot;\\&#xD;&#xA;-- &quot;create an international device to change the world&quot;\\&#xD;&#xA;-- Scott McNealy - Chairman Co-Founder\\&#xD;&#xA;-- Curriki.org - Free open K-12 education wiki\\&#xD;&#xA;&#xD;&#xA;1.1 Implementing Java EE Applications, Using Enterprise JavaBeans (EJB) 3 Technology: Real-World Tips, Tricks, and New Design Patterns {anchor:TS-4721}&#xD;&#xA;- Speaker(s): Fabiane Nardon; Edgar A Silva&#xD;&#xA;- Session Bean Pitfalls&#xD;&#xA;-- Transaction defaults to REQUIRED, must override otherwise&#xD;&#xA;- Exceptions don&apos;t auto rollback, only system exceptions, must annotate rollback exceptions&#xD;&#xA;- Entity Bean Pitfalls&#xD;&#xA;-- Must use @Transient for non persistent fields, otherwise all fields are persistent&#xD;&#xA;-- Fetch types, Lazy, Eager, etc, Lazy is default and usually satisfies&#xD;&#xA;-- Consider eager loading for view layer&#xD;&#xA;- MDB Pitfalls&#xD;&#xA;-- Spec says don&apos;t throw runtime exception&#xD;&#xA;-- So annotate with rollback=true or use programmatic transaction rollback&#xD;&#xA;-- PreDestroy callback may not always be invoked&#xD;&#xA;- Dependency Injection with @Resource includes env-entry properties from deployment descriptors&#xD;&#xA;- Interceptors&#xD;&#xA;-- Business validations&#xD;&#xA;-- Audit&#xD;&#xA;-- Security&#xD;&#xA;-- Can use context information&#xD;&#xA;-- The deployer can turn on/off and define execution order&#xD;&#xA;- Processing Annotation at Runtime&#xD;&#xA;-- Example: Build a dynamic eager fetch query&#xD;&#xA;-- Detect domain/DB schema deltas and auto evolve the DB&#xD;&#xA;- Old Design Patterns to Recycle&#xD;&#xA;-- Session Facade&#xD;&#xA;--- Still needed to hide the EntityManager details&#xD;&#xA;-- Value Object/Data Transfer Object&#xD;&#xA;--- Still needed sometimes&#xD;&#xA;--- Can reduce lazy loading detached objects&#xD;&#xA;-- Fast Lane Reader&#xD;&#xA;--- No longer necessary&#xD;&#xA;-- Delegate&#xD;&#xA;--- Value Diminished&#xD;&#xA;-- Value List Handler&#xD;&#xA;--- Still useful as there are no inherent paging capabilities with EJB 3.0&#xD;&#xA;- New Design Patterns&#xD;&#xA;-- Business Rule Interceptor&#xD;&#xA;--- Add interceptor(s) to execute business rules to keep rule logic out of persistence method&#xD;&#xA;--- Interceptor can delegate to any rules engine i.e. Drools (JBoss Rules)&#xD;&#xA;-- Entity View (New variation of Value Object)&#xD;&#xA;--- Create a query that retrieves fewer fields than a complete entity&#xD;&#xA;-- Eager Loading Parameter&#xD;&#xA;--- Add eager loading alternative methods&#xD;&#xA;-- Data Change Observer&#xD;&#xA;--- Use lifecycle callback methods on entity beans to notify observers&#xD;&#xA;--- Uses @EntityListeners&#xD;&#xA;-- Exportable Method&#xD;&#xA;--- Relevant to SOA&#xD;&#xA;--- Use the @WebMethod annotation on a method that exports an XML marshaler method&#xD;&#xA;-- Exportable Service Broker&#xD;&#xA;--- Relevant to SOA&#xD;&#xA;--- Exporting app to web services, a single view of exported app services&#xD;&#xA;--- Proviles a simple signature, ease of dependency injection for EJB implementations, etc.&#xD;&#xA;1.1 Evolutionary Java Technology: A Look Forward at the Future of the Platform&#xD;&#xA;- Bob Brewin - Sun CTO, Distinguished Engineer&#xD;&#xA;- Talked about history of UI and the motivations for JavaFX&#xD;&#xA;- Gave analogy of &quot;Positive Stability&quot; with aeronautics&#xD;&#xA;- Historical created code and rich interactivity are the two dynamic forces that keep the evolution of UI work oscillating.&#xD;&#xA;- Danny Coward - Java SE Platform Lead&#xD;&#xA;- Java SE 6 Additions&#xD;&#xA;-- WS Stack&#xD;&#xA;-- Scripting&#xD;&#xA;-- GUI Enhancements&#xD;&#xA;-- Tools API&#xD;&#xA;--- Compiler Access&#xD;&#xA;--- Annotation Access&#xD;&#xA;- Java SE 6 JDK Additions&#xD;&#xA;-- Diagnostic Tools to attach on demand&#xD;&#xA;-- Heap Analysis Tool&#xD;&#xA;-- Co-bundled JDBC DB (Apache Derby)&#xD;&#xA;-- Improved Swing Fidelity (More Pixel Perfect, More native feel on Windows)&#xD;&#xA;- Java SE 6 is faster on both Server and Client&#xD;&#xA;- Java SE 7&#xD;&#xA;-- Modularization&#xD;&#xA;--- Development related, the concept of a Super Package&#xD;&#xA;--- Deployment related, the concept of a Super Jar&#xD;&#xA;--- Focus on interoperability with existing formats (i.e. OSGi)&#xD;&#xA;-- Multiple Language Support&#xD;&#xA;--- First class support for other languages&#xD;&#xA;--- scripting.dev.java.net&#xD;&#xA;--- new bytecode&#xD;&#xA;--- Charlie Nutter and Tor Norbye&#xD;&#xA;--- JRuby demo on Mephisto blogging application&#xD;&#xA;--- JRuby NetBeans 6 demo&#xD;&#xA;-- Working on a &quot;Consumer&quot; JRE to reduce download size&#xD;&#xA;--- Modularization of JRE, a core with parallel download of extra modules&#xD;&#xA;- Arun Gupta&#xD;&#xA;-- jMaki, Wrapper for AJAX components&#xD;&#xA;-- Phobos, Serverside AJAX components&#xD;&#xA;-- JSON data format and jMaki/Phobos support in NetBeans&#xD;&#xA;-- NetBeans seamless debug support for both JavaScript and Java&#xD;&#xA;- Jerome Dochez&#xD;&#xA;-- GlassFish v3&#xD;&#xA;--- 100k Kernel (HK2)&#xD;&#xA;--- 463ms startup - lazily loads modules (demo started in 1.3s with a web app)&#xD;&#xA;--- One classloader per module&#xD;&#xA;--- GlassFish can be embedded to support the concept of the &quot;synchronized web&quot;&#xD;&#xA;--- David van Couvering blogged about this concept in relation to Derby&#xD;&#xA;--- Patrick Hogan - NASA Program Manager for the Planetary Visualizer&#xD;&#xA;--- Geospatial Browser - OSS Java based, Ken Russell - Sun Principal Investigator&#xD;&#xA;--- I3 Donated the image data - $250k just for internal use license&#xD;&#xA;--- There is a NetBeans matisse builder for WorldWind components&#xD;&#xA;--- F-16 Flight Simulator - GL Studio, DSTI Corp&#xD;&#xA;--- http://worldwind.arc.nasa.gov&#xD;&#xA;-- IRIS Project&#xD;&#xA;--- http://swinglabs.org/iris&#xD;&#xA;-- Java FX Pad, lightweight development tools is freely bundled&#xD;&#xA;&#xD;&#xA;1.1 Java Puzzlers, Episode VI: The Phantom-Reference Menace/Attack of the Clone/Revenge of the Shift&#xD;&#xA;- Speaker(s): Joshua Bloch; William Pugh&#xD;&#xA;- URL equals() and hashcode() are broken use URI instead&#xD;&#xA;- Don&apos;t use URL as a Set or Map key&#xD;&#xA;- Testing threads with JUnit is a false sense of security&#xD;&#xA;- Class initialization is always in textual order&#xD;&#xA;- The only &quot;compile-time&quot; constants are primitives and Strings&#xD;&#xA;- Never use Boolean (Wrapper) as a return for ternary operations&#xD;&#xA;- InputStream.skip() doesn&apos;t guarantee skip, wrap it&#xD;&#xA;- Math.abs doesn&apos;t guarantee nonnegative result&#xD;&#xA;- ? : operation doesn&apos;t deal nicely with different wrapper types&#xD;&#xA;- widening behavior in primitive types can be dangerous&#xD;&#xA;&#xD;&#xA;1.1 Closures for the Java Programming Language&#xD;&#xA;- Speaker(s): Neil Gafter&#xD;&#xA;- Goals&#xD;&#xA;-- Concise &quot;function&quot; literals without the pain of anonymous inner classes&#xD;&#xA;-- Interoperability with existing APIs&#xD;&#xA;-- Enable control APIs&#xD;&#xA;-- Functional and aggregate operations&#xD;&#xA;-- Simple but powerful&#xD;&#xA;- Syntax and Semantics&#xD;&#xA;-- Closure expressions - &quot;ordinary&quot; interface types&#xD;&#xA;-- Function types - Signature/Result definition with Exceptions&#xD;&#xA;-- Control statements&#xD;&#xA;-- Closure conversion turns a closure into an instance of same interface&#xD;&#xA;--- This provides interoperability to existing APIs&#xD;&#xA;&#xD;&#xA;1.1 JSR 311: The Java API for RESTful Web Services&#xD;&#xA;- Speaker(s): Marc Hadley; Paul Sandoz; Roderico Cruz&#xD;&#xA;- &quot;You cannot make an API or protocol RESTful&quot;&#xD;&#xA;- It is a style of architecture&#xD;&#xA;- RPC, few nouns many verbs&#xD;&#xA;- REST, many nouns view verbs&#xD;&#xA;- Automated content negotiation&#xD;&#xA;-- @ProduceMime(&quot;application/xml&quot;)&#xD;&#xA;-- URI Templates to solve repetitive parsing&#xD;&#xA;--- @UriTemplate(&quot;/artists/{id}&quot;)&#xD;&#xA;-- POJO implementation&#xD;&#xA;--- @HttpMethod&#xD;&#xA;--- @UriParam(&quot;id&quot;)&#xD;&#xA;-- HttpResponse Subclasses for standard HTTP response types&#xD;&#xA;-- Jerome Duvell is on the expert group, creator of Restlet API&#xD;&#xA;-- NetBeans 5.5 will generate JPA entity beans off DB schema&#xD;&#xA;--- Generate REST resource classes from these entities&#xD;&#xA;&#xD;&#xA;1.1 Modularity in the Next-Generation Java Platform, Standard Edition (Java SE): JSR 277 and JSR 294&#xD;&#xA;- BOF Speaker(s): Kumar Srinivasan, Dave Bristor, Alex Buckley, Stanley Ho&#xD;&#xA;- JSR 294 - Super-package language construct (super-package.java)&#xD;&#xA;-- Virtual Machine support for access control&#xD;&#xA;- JSR 297 - Java Module Distribution Format&#xD;&#xA;-- Versioning&#xD;&#xA;-- Tooling&#xD;&#xA;-- Repositories&#xD;&#xA;-- __Issues__&#xD;&#xA;-- Versioning&#xD;&#xA;-- Reference to other JARS&#xD;&#xA;-- Native Libraries, multiple JARS bundle&#xD;&#xA;-- Dual roles: distribution format, and execution format&#xD;&#xA;-- Three problems to eliminate, classpath, JAR, extension&#xD;&#xA;-- APIs to represent the module system&#xD;&#xA;&#xD;&#xA;1 Wed. May 9&#xD;&#xA;1.1 General Session - Oracle&#xD;&#xA;- John Gage - Sun, Chief Researcher, Director of Science Office&#xD;&#xA;- Thomas Kurian - Oracle, SVP - Oracle Server Technologies, Development&#xD;&#xA;-- Jave EE 5, SOA and EDA, Web 2.0, Grid Computing - 4 Trends that will Fundamentally change opps and solutions&#xD;&#xA;-- Java EE 5&#xD;&#xA;--- View - JSF, AJAX&#xD;&#xA;--- Controller - JSF&#xD;&#xA;--- Component Model for UI, Supports rendering Flash, XHTML, WML, SMS&#xD;&#xA;--- Model - EJB 3, JPA&#xD;&#xA;-- Persistence Platform for Java os&apos;ed as &quot;EclipseLink&quot; project, JSR 227 Data Binding&#xD;&#xA;-- Demonstration of Oracle UI components rendering as both Flash and AJAX application&#xD;&#xA;-- Declarative Drag and Drop functionality is cool.&#xD;&#xA;-- Rich Component Framework donated to Apache (in addition to existing Trinidad)&#xD;&#xA;-- Demonstration of Enterprise Mashup functionality for Web 2.0 Development&#xD;&#xA;SIP communications with VoIP is pretty slick&#xD;&#xA;-- &quot;Web Center Composer&quot; to create mashups on the fly at the client side.&#xD;&#xA;-- SCA built on Spring framework, to enable composite applications&#xD;&#xA;-- Service Mediator - is an ESB&#xD;&#xA;-- Service Orchestration - BPEL, worflow, process manager&#xD;&#xA;-- Service Governance - Policy, Failover, SLA, Security, Monitoring, etc&#xD;&#xA;-- Demonstration of SOA and SCA development&#xD;&#xA;-- Oracle&apos;s JEE container is now JEE 5 certified&#xD;&#xA;-- Based on Spring and OSGi&#xD;&#xA;-- Grid Computing benchmarking world records&#xD;&#xA;-- Oracle has now aquired Tangosol Coherence for grid architecture, clustering/availability/scalability&#xD;&#xA;-- Automated Management&#xD;&#xA;-- Demonstration of Grid Computing&#xD;&#xA;-- Cameron Purdy - Tangosol Leading Oracle unit&#xD;&#xA;&#xD;&#xA;1.1 Java Technology Generics and Collections: Tools for Productivity&#xD;&#xA;- Speakers: Maurice Naftalin; Philip Wadler&#xD;&#xA;- Implemented by erasure&#xD;&#xA;- Benefits of erasure impl&#xD;&#xA;- Design Constraint: Binary for legacy client must link to generified library&#xD;&#xA;-- Binaries are the SAME for legacy and generified&#xD;&#xA;- Erasure eases evolution&#xD;&#xA;- The compiler issues an &quot;unchecked warning&quot; if not using a generified method&#xD;&#xA;- Erasure allows legacy and generic clients to co-exist, as binaries interop&#xD;&#xA;- Compile time however requires a little more work&#xD;&#xA;- Generic client won&apos;t compile against the legacy library&#xD;&#xA;-- Three options&#xD;&#xA;--- Minimal changes (surface generification) &#xD;&#xA;--- Stubs (Puts the boundary at the client layer)&#xD;&#xA;--- - Compile time only, runtime doesn&apos;t use stubs&#xD;&#xA;--- Wrappers - not recommended (introduces another layer, above the client)&#xD;&#xA;--- - Creates parallel class hierarchies (duplication)&#xD;&#xA;--- - Nesting leads to multiple wrapper layers&#xD;&#xA;--- - End up with two version&#xD;&#xA;- Problems of Erasure&#xD;&#xA;-- Parameter types are not reified (thingify, make something concrete), not represented at run-time&#xD;&#xA;-- Constructs requiring run-time type information don&apos;t work well (or at all)&#xD;&#xA;--- Casts and instanceof&#xD;&#xA;--- Parametric exceptions don&apos;t work because generic type isn&apos;t present at runtime&#xD;&#xA;--- Problems with arrays&#xD;&#xA;--- - Typing system for arrays at run-time doesn&apos;t mesh well with erasure&#xD;&#xA;--- - No Arrays of Generic Types&#xD;&#xA;- The principle of Truth in Advertising&#xD;&#xA;- The principle of Indecent Exposure (will be published in the slides)&#xD;&#xA;- Reification&#xD;&#xA;- Java 7 may or may not still use erasures&#xD;&#xA;- Gafter has suggested another language change mechanism&#xD;&#xA;- Collections&#xD;&#xA;-- Trends in concurrency policy&#xD;&#xA;-- JDK 1.0 Synched collection methods&#xD;&#xA;-- JDK 1.2 optional java.util synch methods, default unsynched&#xD;&#xA;-- J2SE 5 java.util.concurrent (JSR 166) Thread-safe classes designed for concurrent access&#xD;&#xA;-- Fail Fast iterators are a stop-gap to aid thread-safety but don&apos;t provide it proactively&#xD;&#xA;-- Throws ConcurrentModificationException&#xD;&#xA;&#xD;&#xA;1.1 Effective Java Reloaded&#xD;&#xA;- Speaker(s): Joshua Bloch&#xD;&#xA;- Static Factories - New Advantage, Type inference&#xD;&#xA;- Static Factories Drawbacks, lots of parameters&#xD;&#xA;- Solution - Use the Builder pattern as a static constructor&#xD;&#xA;{code}&#xD;&#xA;public class NutritionFacts {&#xD;&#xA; public static class Builder {&#xD;&#xA;  public Builder() { this.x = ..; this.y = ..;}&#xD;&#xA;  public Builder calories(int calories) { this.calories = calories; return ..;}&#xD;&#xA; }&#xD;&#xA; private NutritionFacts(Builder builder) {&#xD;&#xA;  &lt;copy data from Builder to NutritionFacts&gt;&#xD;&#xA; }&#xD;&#xA;}&#xD;&#xA;{code}&#xD;&#xA;- Generics...&#xD;&#xA;-- Avoid Raw Types in New Code&#xD;&#xA;{code}&#xD;&#xA;// Good&#xD;&#xA;Collection&lt;Coin&gt; cc = new ArrayList&lt;Coin&gt;();&#xD;&#xA;// Bad&#xD;&#xA;Collection cc = new ArrayList();&#xD;&#xA;{code}&#xD;&#xA;-- Don&apos;t ignore Compiler Warnings&#xD;&#xA;-- Understand each warning&#xD;&#xA;-- Eliminate it if possible&#xD;&#xA;-- If cannot eliminate only then suppress via @SuppressWarnings(&quot;unchecked&quot;)\\&#xD;&#xA;-- Limit them as much as possible, declare extra variable if necessary\\&#xD;&#xA;- Use bounded wildcards to increase applicability of APIs&#xD;&#xA;{code}&#xD;&#xA;void buy(int numToBuy, Collection&lt;? super T&gt; myCollection);&#xD;&#xA;void sell(Collection&lt;? extends T&gt; myLot);&#xD;&#xA;{code}&#xD;&#xA;-- Use &lt;? extends T&gt; when parameterized instance is a T producer (&quot;for read/input&quot;)&#xD;&#xA;-- Use &lt;? super T&gt; when parameteried instance is a T consumer (&quot;for write/output&quot;)&#xD;&#xA;-- Use &lt;? T&gt; when reading and writing&#xD;&#xA;- Don&apos;t confuse bounded wildcards with bounded type variables&#xD;&#xA;-- Bounded wildcard - void sell(Collection&lt;? extends T&gt; myLot);\\&#xD;&#xA;- Restrict input parameters, can use super&#xD;&#xA;-- Bounded type variables - &lt;T extends Number&gt; T sum(List&lt;T&gt; x) {...}&#xD;&#xA;- Restricts action type parameter, can&apos;t use super&#xD;&#xA;- If a type variable appears only once in a signature, use a wildcard instead&#xD;&#xA;- Avoid bounded wildcards in Return Types... don&apos;t force it on the client directly&#xD;&#xA;- Only library designers should have to think about wildcards&#xD;&#xA;- Rarely, you do need to return wildcard types&#xD;&#xA;-- List&lt;? extends Number&gt; operands(); // a read-only list of Numbers&#xD;&#xA;- Don&apos;t overuse wildcards&#xD;&#xA;{code}&#xD;&#xA;// good&#xD;&#xA;public static &lt;T&gt; List&lt;T&gt; longer(List&lt;T&gt; c1, List&lt;T&gt; c2)&#xD;&#xA;// bad&#xD;&#xA;public static List&lt;?&gt; longer(List&lt;?&gt; c1, List&lt;?&gt; c2)&#xD;&#xA;{code}&#xD;&#xA;- Use &lt;Void&gt; to clarify intent (non-instantiable)&#xD;&#xA;- __Generics and Arrays don&apos;t Mix; Prefer Generics__&#xD;&#xA;- Generic array creation error caused by&#xD;&#xA;-- new T[SIZE], Set&lt;T&gt;[SIZE], List&lt;String&gt;[SIZE]&#xD;&#xA;- Affects varargs(warning rather than error)&#xD;&#xA;-- void foo(Class&lt;? extends Thing&gt;... things);&#xD;&#xA;- Avoid generic arrays; use List instead&#xD;&#xA;-- List&lt;T&gt;, List&lt;Set&lt;T&gt;&gt;, List&lt;List&lt;String&gt;&gt;&#xD;&#xA;- Some even say; Avoid arrays altogether&#xD;&#xA;- __Cool (Mind Expanding) Pattern - THC - Typesafe Heterogeneous Container__&#xD;&#xA;- Typically, containers are parameterized&#xD;&#xA;-- Limits you to a fixed number of type parameters&#xD;&#xA;- Sometimes you need more flexibility&#xD;&#xA;-- Database rows&#xD;&#xA;- You can parameterize selector instead&#xD;&#xA;-- Present selector to..&#xD;&#xA;{code}&#xD;&#xA; private Map&lt;Class&lt;?&gt;, Object&gt; favorites = new Hashmap&lt;TypeRef&lt;?&gt;, Object&gt;();&#xD;&#xA; public &lt;T&gt; void setFavorite(Class&lt;T&gt; klass, T thing) {}&#xD;&#xA; public &lt;T&gt; T getFavorite(Class&lt;T&gt; klass) { return klass.cast(favorites.get(klass));&#xD;&#xA;{code}&#xD;&#xA;-- The Solution: Super Type Tokens - Sublass the abstract class TypeRef&lt;T&gt;, then use reflection&#xD;&#xA;- Generics are tricky, but they make your code safer and cleaner&#xD;&#xA;- Use @Override annotation every time you want to override, makes sure you don&apos;t accidentally overload &#xD;&#xA;- final is the new private&#xD;&#xA;- minimizes mutability, clearly threadsafe&#xD;&#xA;- blank finals are fine (i.e. fill in when constructor executes)&#xD;&#xA;- watch out for readObject and clone (these can&apos;t work with final variables)&#xD;&#xA;&#xD;&#xA;1.1 Improving Software Quality with Static Analysis&#xD;&#xA;- Speaker(s): William Pugh&#xD;&#xA;- All about Findbugs and bug patterns&#xD;&#xA;&#xD;&#xA;1.1 Three Approaches to Securing Your JavaServer Faces Technology/Spring/Hibernate Applications&#xD;&#xA;- Speaker(s): Ray Lai, Jaya Doraiswamy&#xD;&#xA;- JSF pure security implementation can take advantage of the &lt;f:verbatim/&gt; tag&#xD;&#xA;- JSF-Security project on sourceforge&#xD;&#xA;- Acegi (Spring-Security)&#xD;&#xA;-- Use FilterChainProxy ability to delegate to many filters&#xD;&#xA;-- SecurityContextHolderAwareFilter&#xD;&#xA;-- FilterSecurityInterceptor uses AOP internally&#xD;&#xA;- Securing business methods via MethodSecurityInterceptor&#xD;&#xA;- Acegi XML configuration is very heavy, this will decrease in future release&#xD;&#xA;- Acegi only supports SSO through CAS&#xD;&#xA;&#xD;&#xA;1 Thu. May 10&#xD;&#xA;1.1 GlassFish v2 Technical Overview&#xD;&#xA;- Speaker(s): Pandey and White&#xD;&#xA;- Free for development, deployment, redist&#xD;&#xA;- OSI approved CDDL and GPLv2&#xD;&#xA;- V1 included...&#xD;&#xA;-- Annotations and POJO based development&#xD;&#xA;-- Web Services Management, a unified view&#xD;&#xA;-- Self Management and Healing&#xD;&#xA;-- Single Instance Offfering to make it easy for developer adoption&#xD;&#xA;- V2 includes...&#xD;&#xA;-- More &quot;enterprise&quot; ready&#xD;&#xA;-- Support for clustering and light-weight session failover&#xD;&#xA;-- WSIT - Web Services Interop Technology&#xD;&#xA;-- Support for JBI&#xD;&#xA;- More ASP, Hosting, Startup adoption&#xD;&#xA;- Clustering&#xD;&#xA;-- asadmin/admin console uses JMX to talk to DAS&#xD;&#xA;-- DAS - Domain Administration Server - considered an administration node&#xD;&#xA;-- DAS includes apps, resources, config&#xD;&#xA;-- DAS talks JMX to Nodes via a nodeagent&#xD;&#xA;-- HA Application State Repository (HttpSession, SSO, SFSB, etc)&#xD;&#xA;-- Memory replication or RDBMS&#xD;&#xA;-- HADB needed and open-source lighter-weight alternative&#xD;&#xA;-- HADB still solid (5 9s) but not OSS and more complex to admin&#xD;&#xA;-- Memory replication was chosen for GFv2 instead of HADB&#xD;&#xA;-- Feature compatible with HADB&#xD;&#xA;-- Each Instance (JVM) replicates to only one other instance&#xD;&#xA;-- {1,3}{2,4}&#xD;&#xA;-- 1-2, 3-4 across physical server boundaries&#xD;&#xA;-- 2 Cases for failover&#xD;&#xA;--- Case 1. A Servlet Container would replicate (HTTP Session) to a &quot;replica&quot; cache down the chain of instances using &quot;version control&quot; to identify if load-balancer can trust the data in the replica cache&#xD;&#xA;--- Case 2: Instance doesn&apos;t have replica data then broadcast (somebody is asking for session 123 who has it?) uses a SASE (self addressed stamped envelope). Broadcast isn&apos;t standard multicast UDP, constrained custom protocol.&#xD;&#xA;-- Load Balancer is self-monitoring, via IO exceptions, JXTA, etc. Will re-establish when new instances join also.&#xD;&#xA;-- Memory Replication out of the Box&#xD;&#xA;-- Create a domain (DAS)&#xD;&#xA;--- Use the &apos;cluster&apos; admin profile - defaults for replication are handled&#xD;&#xA;--- Enables GMS - heartbeat enabled&#xD;&#xA;--- persistence-type = &quot;replicated&quot;&#xD;&#xA;-- Create a cluster and instances&#xD;&#xA;-- Deploy your app with availability-enabled=true&#xD;&#xA;-- That&apos;s it&#xD;&#xA;-- Increase heap size&#xD;&#xA;-- Default is 512MB for cluster admin profile&#xD;&#xA;--- To accommodate cluster demos on laptops&#xD;&#xA;--- Realistically too small for serious replication&#xD;&#xA;-- Add the &lt;distributable/&gt; element&#xD;&#xA;--- Required in web.xml&#xD;&#xA;--- Indicates you believe your app is ready to run in a cluster&#xD;&#xA;--- Makes you think about serialization objects for session state, SFSB state etc.&#xD;&#xA;-- Performance&#xD;&#xA;--- Cost of Replication&#xD;&#xA;--- Hits/Sec ~17-25% throughput degradation, 2k, 4k, 8k session significantly better than HADB&#xD;&#xA;-- Based on JXTA and project Shoal/GMS&#xD;&#xA;--- JXTA is a peer to peer tech&#xD;&#xA;--- Streamlined to handle the high-volume and throughput reqs of memory replicaiton&#xD;&#xA;--- Benefited from collaboration with Grizzly project&#xD;&#xA;--- JXTA tech group and member abstractions&#xD;&#xA;--- Simplified APIs made near zero-config (Cluster--&gt;Group, Member--&gt;Peers) in JXTA terms&#xD;&#xA;-- GMS Group Mgmt Service&#xD;&#xA;--- Provides dynamic membership, health monitoring, lightweight messaging etc&#xD;&#xA;--- GMS is itself based on JXTA&#xD;&#xA;--- shoal.dev.java.net - Pluggable Runtime Clustering Framework&#xD;&#xA;--- Membership change notifications and cluster state&#xD;&#xA;--- Cluster-wide, member to member messaging&#xD;&#xA;--- Recovery oriented&#xD;&#xA;--- Distributed Cache&#xD;&#xA;--- Provides SPI for alternative providers for Group communication&#xD;&#xA;--- Used for automatic transaction recovery&#xD;&#xA;--- Timer migrations&#xD;&#xA;--- Cluster health&#xD;&#xA;--- In-mem repl&#xD;&#xA;--- IIOP failover load-balancer&#xD;&#xA;- WSIT (Project Tango)&#xD;&#xA;-- Interop between Java and .NET 3.0/WCF aka Indigo&#xD;&#xA;-- JAX-WS RI of WS-* specs from Microsoft&#xD;&#xA;-- Optimizing communication&#xD;&#xA;-- Reliable messaging&#xD;&#xA;-- WS-Security, WS-Trust&#xD;&#xA;- JBI (JSR 208)&#xD;&#xA;-- Admin through admin console (OpenESB is the JBI runtime)&#xD;&#xA;- Others&#xD;&#xA;-- Usage Profiles&#xD;&#xA;--- Improving user-experience (WAS Profiles, developer versus production etc)&#xD;&#xA;--- Canned Dev, Cluster, Enterprise profiles&#xD;&#xA;--- V3 will allow custom profiles&#xD;&#xA;-- Update Centers&#xD;&#xA;--- Runtime or non-runtime additional component installation (GUI based)&#xD;&#xA;--- Implemented across two tiers (server for content/catalog, and then GUI)&#xD;&#xA;-- Security (JSR 196 Java Auth SPI for Containers)&#xD;&#xA;--- ECC (Elliptice Curve Crypto)&#xD;&#xA;--- Support for JKS format&#xD;&#xA;--- Support for assign-groups in Security-Realm&#xD;&#xA;--- JDBC Realm&#xD;&#xA;-- Web Container enhancements&#xD;&#xA;--- Grizzly based (Async Req Processing -ARP and Comet framework&#xD;&#xA;--- Non-blocking SSL&#xD;&#xA;--- Apache AJP&#xD;&#xA;--- In-memory JSR 199 - style JSP compilations&#xD;&#xA;--- All webcontainer aspects are now dynamically reconfigurable (No server restart)&#xD;&#xA;--- Alternate docroots for virtual servers and web apps&#xD;&#xA;--- Numerous web container startup and req processing optimizations&#xD;&#xA;-- New Admin Console&#xD;&#xA;--- Using JSF Templating&#xD;&#xA;--- jMaki charting&#xD;&#xA;--- Ajax, breadcrumbs, trees, etc&#xD;&#xA;--- Support for cluster mgmt&#xD;&#xA;--- One-step deployment with Server-side browsing&#xD;&#xA;--- Integrated JBI admin&#xD;&#xA;-- Perf Improvements&#xD;&#xA;--- Startups -lazy loading of modules etc&#xD;&#xA;--- Asynch web services impl&#xD;&#xA;--- EJB container&#xD;&#xA;--- ORB&#xD;&#xA;--- JMS provider&#xD;&#xA;--- Web Container (Grizzly)&#xD;&#xA;-- Spec Updates&#xD;&#xA;--- JSR 196 (Auth SPI)&#xD;&#xA;--- 208 - JBI&#xD;&#xA;--- JSF 1.2 MR&#xD;&#xA;--- JAX-WS&#xD;&#xA;&#xD;&#xA;1.1 Advanced Spring Framework&#xD;&#xA;- Speaker(s): Rod Johnson&#xD;&#xA;- Announcement Spring just raised 10million in series A VC&#xD;&#xA;- Spring Fundamentals&#xD;&#xA;-- Core component model&#xD;&#xA;-- Services&#xD;&#xA;-- Patterns (Recipes) i.e. JdbcTemplate, LdapTemplate, etc&#xD;&#xA;-- Integration (Ecosystem)&#xD;&#xA;-- Portable (Runs Everywhere)&#xD;&#xA;-- Promotes a Universal POJO programming model&#xD;&#xA;- Key Enabling Techs make up the Spring Triangle&#xD;&#xA;-- DI - Inject Collaborators (pojo business objects)&#xD;&#xA;-- AOP - Inject Behavior (Security, Logging, etc.)&#xD;&#xA;-- PSA - Portable Service Abstractions (i.e. Transaction Mgmt, etc)&#xD;&#xA;- Value-Add: Exporting a remote endpoint&#xD;&#xA;- Once spring knows about a component can provide many server side &quot;Exporters&quot;&#xD;&#xA;- Value-Add: JMX API Export&#xD;&#xA;- Can expose any bean as a JMX API MBean&#xD;&#xA;- Aspects can use @Aspect class annotation and @After method annotation etc.&#xD;&#xA;- Spring 2.0 uses AspectJ 5 libraries so it is typesafe, uses argument binding&#xD;&#xA;- Aspects are extension points for the container&#xD;&#xA;-- &lt;aop:aspectj-autoproxy/&gt; will auto apply aspectj annotations&#xD;&#xA;- FactoryBean - introduces a level of indirection&#xD;&#xA;- BeanPostProcessor - Called on every bean instantiation, a listener to the instantiation of objects&#xD;&#xA;- BeanFactoryPostProcessor - Can modify/add bean definitions, new/modify properties etc&#xD;&#xA;-- Example: decrypt passwords stored in property files&#xD;&#xA;- BeanDefinition - One for every bean definition in the config.xml&#xD;&#xA;- Activating a BeanPostProcessor is as easy as declaring a bean for that post-processor&#xD;&#xA;- New to 2.0 - custom bean definitions, that is define new XML tags to produce zero or more Spring bean defs&#xD;&#xA;-- Example: when multiple beans must always use each other, or always require multiple properties&#xD;&#xA;- Acegi will release in 3 weeks a new version that provides custom namespace to reduce the bulky config&#xD;&#xA;- The JAX-WS RI now uses Spring as an extension point.&#xD;&#xA;- New:&#xD;&#xA;-- &lt;jee:jndi-lookup id=&quot;dataSource&quot; jndiName=&quot;jdbc/StockData&quot;/&gt;&#xD;&#xA;-- &lt;util: namespace, etc.&#xD;&#xA;- Multiple beans to one custom structure...&#xD;&#xA;- Example: &lt;tx:annotation-driven/&gt;&#xD;&#xA;- Steps for Authoring Custom Extensions&#xD;&#xA;-- Write an XSD to define the element content&#xD;&#xA;-- Implement a NamespaceHandler interface, Spring will generate of this marker&#xD;&#xA;-- Register in META-INF/spring.handlers&#xD;&#xA;-- Import using standard XSD conventions in Spring config.xml&#xD;&#xA;- Only use custom namespaces for things you do ALL the time, as it does introduce non-standard complexity for team&#xD;&#xA;- Spring 2.1 Stuff&#xD;&#xA;-- Released this week (JavaOne) Final in early July&#xD;&#xA;-- Allows annotations for config as well as xml @Component class level, @Autowired on instance variables&#xD;&#xA;-- @Aspect, @Pointcut, @After, @Before, etc.&#xD;&#xA;-- JCA 1.5 support&#xD;&#xA;-- Further JPA support&#xD;&#xA;-- &lt;context:annotation-scan base-package=&quot;demo&quot; /&gt; to filter annotation scanning&#xD;&#xA;-- Key difference, annotation configuration is per class whereas xml can also be per instance&#xD;&#xA;- Scaling out Spring&#xD;&#xA;- Consume objects written in dynamic languages&#xD;&#xA;- Scale out through integrations with 3rd party products&#xD;&#xA;-- i.e. Grid products, OSGi, etc&#xD;&#xA;- Avoids assumptions about environment in API so easily applicable in Grid (Tangosol/Oracle example)&#xD;&#xA;- SCA enabled by Spring&#xD;&#xA;- Interface21 is member of Open SOA&#xD;&#xA;- OSGi&#xD;&#xA;-- Doesn&apos;t currently support injection&#xD;&#xA;-- Complementary Technologies&#xD;&#xA;-- Injection/AOP component model&#xD;&#xA;-- Dynamic runtime model&#xD;&#xA;-- Spring OSGi Goals:&#xD;&#xA;--- Use spring to configure bundles&#xD;&#xA;--- Easier to publish and consume services accross multiple bundles&#xD;&#xA;--- Enable apps to be coded without dependency on OSGi APIS (easier unit and integration testing)&#xD;&#xA;--- Provide the needed bundles and infrastructure to deploy OSGi based apps to app servers&#xD;&#xA;--- Led by Interface21 supported by OSGi and others vendors&#xD;&#xA;--- Spring modules will be packageable as OSGi bundles&#xD;&#xA;--- Export and Import OSGi services from Spring context&#xD;&#xA;--- Example: &lt;osgi:reference ... &lt;osgi:service&#xD;&#xA;--- OSGi is a rigorous approach to visibility (bundle classloading)&#xD;&#xA;--- Versioning is also inherent to OSGi bundles&#xD;&#xA;- Spring Security will be the new name for Acegi&#xD;&#xA;- Will be bundling for purpose-driven downloads (i.e. Web Flow with Security, etc.)&#xD;&#xA;&#xD;&#xA;1.1 Unleashing the Power of JAX-WS RI: Spring, Stateful Web Services, SMTP, and More&#xD;&#xA;- Speaker(s): Kohsuke Kawaguchi, Jitendra Kotamraju&#xD;&#xA;- Using spring for deployment&#xD;&#xA;- Create a handler bean and a service bean, inject the handler to the service&#xD;&#xA;- Can also export over JSON for JavaScript clients&#xD;&#xA;-- @BindingType(JSONBindingID.JSON_BINDING&#xD;&#xA;-- Any JAXB bindings are supported for JSON format&#xD;&#xA;- SFSB&#xD;&#xA;-- @com.sun.xml.ws.developer.Stateful&#xD;&#xA;- public static endpoint declaration&#xD;&#xA;- EndpointReference return type via manager.export();&#xD;&#xA;- SFSB using proprietary API but standard on the wire for WS-Addressing&#xD;&#xA;- Transports&#xD;&#xA;-- In-VM Testing, developing, very fast, why use a true transport layer&#xD;&#xA;-- Example: &lt;in-vm:bindings id=&quot;books&quot;&gt;&lt;in-vm:endpoints&gt;&lt;ws:service...&#xD;&#xA;-- JMS&#xD;&#xA;-- One queue for req and a temp queue for response&#xD;&#xA;-- SMTP - Nice for asynchronous, and firewall friendly&#xD;&#xA;-- Example: &#xD;&#xA;-- &lt;wsm:smtp service=#gretting...&quot; incoming= outgoing= /&gt;&#xD;&#xA;-- &lt;wsm:sender id= host= from= /&gt;&#xD;&#xA;-- &lt;wsm:pop3 ...&#xD;&#xA;-- SOAP/TCP&#xD;&#xA;- Part of WSIT in GlassFish v2, configurable in NetBeans&#xD;&#xA;- Additional Headers...&#xD;&#xA;- Type cast proxy to WSBindingProvider&#xD;&#xA;{code}&#xD;&#xA;HelloPort proxy = ...;&#xD;&#xA;WSBindingProvider bp = (WSBindingProvider) proxy;&#xD;&#xA;Header h = Headers.create(new QName(&quot;hdr1&quot;), &quot;mystr1&quot;);&#xD;&#xA;bp.addOutboundHeaders(h);&#xD;&#xA;{code}&#xD;&#xA;- Multiple Services Instances&#xD;&#xA;- To handle concurrency issues with @WebService pojos&#xD;&#xA;- WebServiceContext can be used to get HttpSession&#xD;&#xA;- Use @HttpSessionScope to declare one service instance per HttpSession&#xD;&#xA;- No need to store your state to HttpSession, instance variables are fine&#xD;&#xA;- Use @ThreadScope to not have to write ThreadLocal type boilerplate for threadsafe resources&#xD;&#xA;- Scope by session, thread, request, etc&#xD;&#xA;- Can create instances using a custom policy&#xD;&#xA;- Monitoring and Logging...&#xD;&#xA;- enable client and server transport logging (system properties)&#xD;&#xA;- com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true&#xD;&#xA;- com.sun.xml.ws.transport.http.HttpAdapert.dump=true&#xD;&#xA;- Server Side Asynchrony...&#xD;&#xA;- The AsyncProvider doesn&apos;t immediately turn a response to avoid blocking, use a callback to receive response&#xD;&#xA;-- AsyncProviderCallback&#xD;&#xA;- RI is used in GlassFish, BEA 10, TmaxSoft JEUS6,JDK 6&#xD;&#xA;&#xD;&#xA;1 Gosling&apos;s Toy Show&#xD;&#xA;- Project Dlight (cool diagnostic tool)&#xD;&#xA;- Sun Compute Grid available on network.com, provides web services, takes spreadsheets, etc, 200 CPU hours for free&#xD;&#xA;- Tor&apos;s Demo of NetBeans Rails support, bottom up JPA generation, etc</s:content>
        <s:mTime>2007-05-14 16:42:32.0</s:mTime>
        <s:cTime>2007-05-09 23:46:34.0</s:cTime>
        <s:comments
             rdf:type='http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag'/>
        <s:snipLinks>
            <rdf:Bag>
                <rdf:li rdf:resource='#snipsnap-index'/>
            </rdf:Bag>
        </s:snipLinks>
        <s:attachments
             rdf:type='http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag'/>
    </s:Snip>
</rdf:RDF>

