Free Sun WebServices Certification

Nov 22nd, 2008 Posted in Java | no comment »

Great news for Java Web Services developers looking to get certified on the cheap. Sun Microsystems is offering free certification for their latest exam, the Sun Certified Developer Java Web Services 5 (SCDJWS 5) certification. You will be helping Sun to beta test the new certification, but you must register before December 10. The following are the exam objectives:

Exam Testing Objectives
Section 1: XML Web Service Standards

  • 1.1 Given XML documents, schemas, and fragments determine whether their syntax and form are correct (according to W3C schema) and whether they conform to the WS-I Basic Profile 1.1.
  • 1.2 Describe the use of XML schema in Java EE Web services

Section 2: SOAP 1.2 Web Service Standards

  • 2.1 List and describe the encoding types used in a SOAP message.
  • 2.2 Describe the SOAP Processing and Extensibility Model.
  • 2.3 Describe SOAP Message Construct and create a SOAP message that contains an attachment.

Section 3: Describing and Publishing (WSDL and UDDI)

  • 3.1 Explain the use of WSDL in Web services, including a description of WSDL’s basic elements, binding mechanisms and the basic WSDL operation types as limited by the WS-I Basic Profile 1.1.
  • 3.2 Describe how WSDL enables one to separate the description of the abstract functionality offered by a service from concrete details of a service description such as “how” and “where” that functionality is offered.
  • 3.3 Describe the Component Model of WSDL including Descriptions, Interfaces, Bindings, Services and Endpoints.
  • 3.4 Describe the basic functions provided by the UDDI Publish and Inquiry APIs to interact with a UDDI business registry.

Section 4: JAX-WS

  • 4.1 Explain JAX-WS technology for building web services and client that communicate using XML
  • 4.2 Given a set of requirements for a Web service, such as transactional needs, and security requirements, design and develop Web service applications that use JAX-WS technology
  • 4.3 Describe the Integrated Stack (I-Stack) which consists of JAX-WS, JAXB, StAX, SAAJ
  • 4.4 Describe and compare JAX-WS development approaches.
  • 4.5 Describe the features of JAX-WS including the usage of Java Annotations.
  • 4.6 Describe the architecture of JAX_WS including the Tools SPI that define the contract between JAX-WS tools and Java EE.
  • 4.7 Describe creating a Web Service using JAX-WS.
  • 4.8 Describe JAX-WS Client Communications Models.
  • 4.9 Given an set of requirements, design and develop a Web service client, such as a Java EE client and a stand-alone client, using JAX-WS.
  • 4.10 Given a set of requirements, create and configure a Web service client that accesses a stateful Web service.

Section 5: REST, JSON, SOAP and XML Processing APIs (JAXP, JAXB and SAAJ)

  • 5.1 Describe the characteristics of REST Web Services.
  • 5.2 Describe the characteristics of JSON Web Services.
  • 5.3 Compare SAOP web services to REST Web Services.
  • 5.4 Compare SAOP web services to JSON Web Services.
  • 5.5 Describe the functions and capabilities of the APIs included within JAXP.
  • 5.6 Describe the functions and capabilities of JAXB, including the JAXB process flow, such as XML-to-Java and Java-to-XML, and the binding and validation mechanisms provided by JAXB.
  • 5.7 Create and use a SOAP message with attachments using the SAAJ APIs.

Section 6: JAXR

  • 6.1 Describe the function of JAXR in Web service architectural model, the two basic levels of business registry functionality supported by JAXR, and the function of the basic JAXR business objects and how they map to the UDDI data structures.
  • 6.2 Create JAXR client to connect to a UDDI business registry, execute queries to locate services that meet specific requirements, and publish or update information about a business service.

Section 7: Java EE Web Services

  • 7.1 Identify the characteristics of and the services and APIs included in the Java EE platform.
  • 7.2 Explain the benefits of using the Java EE platform for creating and deploying Web service applications.
  • 7.3 Describe the functions and capabilities of the JAXP, DOM, SAX, StAX, JAXR, JAXB, JAX-WS and SAAJ in the Java EE platform.
  • 7.4 Describe the role of the WS-I Basic Profile when designing Java EE Web services.

Section 8: Security

  • 8.1 Explain basic security mechanisms including: transport level security, such as basic and mutual authentication and SSL, message level security, XML encryption, XML Digital Signature, and federated identity and trust.
  • 8.2 Identify the purpose and benefits of Web services security oriented initiatives and standards such as Username Token Profile, SAML, XACML, XKMS, WS-Security, and the Liberty Project.
  • 8.3 Given a scenario, implement Java EE based web service web-tier and/or EJB-tier basic security mechanisms, such as mutual authentication, SSL, and access control.
  • 8.4 Describe factors that impact the security requirements of a Web service, such as the relationship between the client and service provider, the type of data being exchanged, the message format, and the transport mechanism.
  • 8.5 Describe WS-Policy that defines a base set of constructs that can be used and extended by other Web specifications to describe a broad range of service requirements and capabilities.

Section 9: Developing Web Services

  • 9.1 Describe the steps required to configure, package, and deploy Java EE Web services and service clients, including a description of the packaging formats, such as .ear, .war, .jar, annotations and deployment descriptor settings.
  • 9.2 Given a set of requirements, develop code to process XML files using the SAX, StAX, DOM, XSLT, and JAXB APIs.
  • 9.3 Given an XML schema for a document style Web service create a WSDL file that describes the service and generate a service implementation.
  • 9.4 Given a set of requirements, create code to create an XML-based, document style, Web service using the JAX-WS APIs.
  • 9.5 Implement a SOAP logging mechanism for testing and debugging a Web service application using Java EE Web Service APIs.
  • 9.6 Given a set of requirements, create code to handle system and service exceptions and faults received by a Web services client.

Section 10: Web Services Interoperability Technologies

  • 10.1 Describe WSIT, the features of each WSIT technology and the standards that WSIT Implements for each technology and how it works.
  • 10.2. Describe how to create a WSIT client from a Web Service Description Language (WSDL) file.
  • 10.3 Describe how to configure web service providers and clients to use message optimization.
  • 10.4 Create a Microsoft Windows Communication Foundation (WCF) client that accesses a Java web service.
  • 10.5 Describes the best practices for production and consumption of data interoperability between WCF web services and Java web service clients or between Java web services and WCF web service clients.

Section 11: General Design and Architecture

  • 11.1 Describe the characteristics of a Service Oriented Architecture (SOA) and how Web services fit to this model.
  • 11.2 Given a scenario, design a Java EE web service using Web Services Design Patterns (Asynchronous Interaction, JMS Bridge, Web Service Cache, Web Service Broker), and Best Practices.
  • 11.3 Describe how to handle the various types of return values, faults, errors, and exceptions that can occur during a Web service interaction.
  • 11.4 Describe the role that Web services play when integrating data, application functions, or business processes in a Java EE application.

Section 12: Endpoint Design and Architecture

  • 12.1 Given a scenario, design Web Service applications using information models that are either procedure-style or document-style.
  • 12.2 Describe the function of the service interaction and processing layers in a Web service.
  • 12.3 Design a Web service for an asynchronous, document-style process and describe how to refactor a Web Service from a synchronous to an asynchronous model.
  • 12.4 Describe how the characteristics, such as resource utilization, conversational capabilities, and operational modes, of the various types of Web service clients impact the design of a Web service or determine the type of client that might interact with a particular service.

EJB 3.1 Passes!

Nov 14th, 2008 Posted in Java | no comment »

With EJB 3.0 being such an evolutionary step over EJB 2, the spit and polish has really been applied in the form of JSR #318, better known as EJB 3.1.

Gone are the requirements for EJBs to be packaged within EAR files: put them right in the WAR baby! And while you’re at it, dump the EJB deployment descriptor as well. Gone are mandatory interfaces for entities, POJOs for everyone. Added are brand new Timer and Scheduler services with callbacks and transaction support. No longer must we rely on MDBs for our asynchronous method needs: Now we simply annotate @Asynchronous to any session bean method with a return type of void or Future. JPA now includes support for inheritance and polymorphism. The addition of Java EE Profiles - especially the new Java EE Web Profile and EJB Lite.

The new specification is looking lean and mean. As someone who used to teach this stuff, EJB 3.1 is something I’d be happy to teach instead of the dread that would creep over me when starting an EJB 2 class knowing full well what was in store for my poor students. This framework truly simplifies Java Enterprise development by taking a huge bite out of the complexity of both developing and deploying.

Here are the final results of the Public Review Ballot for JSR #318:

SE/EE

Apache Software Foundation No
Eclipse Foundation, Inc No Vote
Fujitsu Limited Yes
Google Inc. No Vote
Hewlett-Packard Yes
IBM Yes
Intel Corp. Yes
Lea, Doug Yes
Nortel Yes
Oracle Yes
Red Hat Middleware LLC No Vote
SAP AG No Vote
SAS Institute Inc. Yes
Suleiman, Hani Yes
Sun Microsystems, Inc. Yes

The Executive Committee for SE/EE has approved this ballot. The Apache Foundation left following note regarding their no vote:

Apache Software Foundation voted No with the following comment:
The Apache Software Foundation must regretfully vote “no” for this ballot as the ASF contends that the spec lead - Sun Microsystems - is in violation of the JSPA, and the ASF does not support JCP participation by any entity that doesn’t comply with the rules and procedures agreed to by the rest of the JCP community.

This is not a judgment about the technical or other related merits of the work this community is doing on the JSR.

Free J2EE Books

Aug 7th, 2008 Posted in Java | no comment »

Here’s a link to free J2EE books around the internet.

Java Responsible for Dumbing Down Students?

Jul 29th, 2008 Posted in Java, blog | no comment »

James Maguire wrote an thought provoking post on Java’s role in the dumbing down of today’s CS graduates, stating:

The reason: students’ reliance on Java’s libraries of pre-written code means they aren’t developing the deep programming skills necessary to make them invaluable.

Clearly this is a curriculum problem and not the fault of a particular programming language but it does illustrate the conflict for the need of businesses to rapidly develop applications by relying on pre-written code vs. the rigorous study required to develop the libraries. As someone who’s interviewed dozens of Java developers it is surprising how many lack the fundamentals of java let alone troubleshooting processor specification bugs since they are so narrowly focused on a particular set of web-tier API’s to the exclusion of everything else.

.

The trend in languages today is even more reliance on libraries, code generation and remote services so demand for ‘library experts’ wont be reversing anytime soon. Also, with open-source fast becoming the de facto-standard for commodity libraries there is greater need for people who can quickly comprehend complex codebases and integrate them. Perhaps it’s time for a new degree type somewhere in-between Information Management and Computer Science. We can call it Application Science.

Collection Diagram

Jul 29th, 2008 Posted in Java | no comment »

Here’s a nice high level diagram of the Collection package with documentation.

StringBuffer vs. StringBuilder

Jul 29th, 2008 Posted in Java | no comment »

Here’s a nice blog entry by Daniel Pietraru showing how StringBuilder is around 34% faster than StringBuffer for single threaded applications. Even includes bytecode analysis for plain String concatenation, something I’ve always been curious about.

  1.         StringBuilder concat = new StringBuilder(BUFFSIZE);  
  2.         for (int i = 0; i < ITERATIONS; i++) {  
  3.             concat.append(i % 10);  
  4.         }