1 sco java and web services roadmap jonathan schilling, sco engineering
TRANSCRIPT
1
SCO Java and Web Services Roadmap
Jonathan Schilling, SCO Engineering
2
Topics and Agenda
What is JavaJava 2 Standard Edition
Java 1.4.2
Java 2 Enterprise Editionsolutions for SCO platforms
Java Serial and Parallel I/O SupportJava Desktop Technologies
Web ServicesFor Java and for other languages
What is Java ? (First Things)
A languageobject-oriented, concurrent,
distributed, self-aware
A portable runtime environmentsimilar to an OS but platform-independent
A set of APIs covering the breadth of an OSA set of APIs enabling application layersA good base for web servicesA development environment
4
The State of Java
Dominant technology for modern programmingPortabilityEnterpriseServer-sideMiddlewareWeb services
Also used as client GUI or as browser plug-inGuided by Sun, built by whole industry
Java Community Process governs evolution
5
The Microsoft .NET Challenge
Does have interesting and useful technologyImitates Java in several respects
C# language similar to JavaCIL intermediate form similar to Java bytecodeCommon Language Runtime similar to JVM… but Java now imitating .NET in a few places
Suffers from vendor and platform lock-inNewer, less matureMicrosoft now collaborating with Sun and IBM …
Although Ballmer says interop progress has slowed
Mono .NET implementation is scheduled for SCO “Fusion”
6
SCO’s Java Involvement
SCO was a member of the Java Community Process (JCP) Executive Committee
voted on “JSRs” that define/evolve Java standardpromote adoption/growth of the Java technology2000 - 2004
SCO is a Sun Java source code licensee
since 1996basis of SCO UNIX J2SE
http://www.sco.com/java/
7
The Pieces of Java
J2EEJ2EEWeb Services
Web Services
J2SEJ2SEDevelopmentTools
DevelopmentTools
Specialty APIs:javax.comm
Specialty APIs:javax.comm
Desktop:Plug-in,
WebStart
Desktop:Plug-in,
WebStart
What is Java 2 Standard Edition?
The central core of Java; provided with OSIncludes the following execution pieces:
Java Virtual Machine (JVM) the underlying execution engine
transparent runtime compilers for performance “just-in-time” or “dynamic” or “adaptive”
basic API libraries:language support, utilities, math, I/Oapplets, AWT, JFC/Swing, 2D, images, medianetworking, compression, and security
distributed/component programming core:XML, RMI, Java Beans; parts of JDBC, JNDI, CORBA
various commandskeytool, rmic, rmiregistry, serialver, native2ascii, idlj, etc.
a/k/a the Java Runtime Environment (JRE)
What is Java 2 SE (cont’d)?
Includes the following (command-line) development pieces:javac source-to-bytecode compiler,jdb command-line debugger,javah header/stub generator for native method support javap bytecode disassembler,javadoc documentation formatter,jar archiving tool,appletviewer browser for applet testinga/k/a Java Software Development Kit (JDK, SDK)
10
SCO UNIX Java Release History
JDK 1.1
May 1997 J2SE 1.2.2 Mar 2000
JDK 1.1.3 Mar 1998 J2SE 1.3.0_02
Jun 2001
JDK 1.1.3u Jun 1998
J2SE 1.3.1_04
Dec 2002
JDK 1.1.3w
Feb 1999
J2SE 1.3.1_16 Jul 2005 (latest)
JDK 1.1.7A Mar 1999 J2SE 1.4.2_03 May 2004
JDK 1.1.7B Oct 1999 J2SE 1.4.2_08 Jul 2005 (latest)
JDK 1.1.8 Dec 2000
11
J2SE 1.4.2 for SCO UNIX Platform Support
SCO OpenServer 6.0.0
UnixWare 7.1.4
UnixWare 7.1.3 Update Pack 4essentially equivalent to UW 7.1.4
SCO OpenServer 5.0.7 MP3 [UP3/SuppCD3]requires OSRcompat v. 8.0.2 or higheruses new user-space OSR5 UDK threads library
12
J2SE 1.3.1 for SCO UNIX Platform Support
Unixware 7.1.4UnixWare 7.1.3UnixWare 7.1.2 (a/k/a Open UNIX 8)
requires Maintenance Pack 3 (ou800m3) or higher
UnixWare 7.1.1requires Maintenance Pack 1 (uw711pk1) or higher
requires libc, libm, libC, libthread 8.0.0 or higher
SCO OpenServer 5.0.7requires OSRcompat 8.0.1 or higher
SCO OpenServer 5.0.6requires OSRcompat 8.0.1 or higherrequires OSS643A
13
J2SE 1.4.2 for SCO UNIX Packages
Package j2jre142 runtime support
Package j2sdk142developer support, demos
Package j2plg142Java Plug-in support for Mozilla browser
All of above installed by defaultinstall from download site for later patch releasespkgadd format for UW7, custom format for OSR5 and
OSR6
/usr/java/ReleaseNotes.html is release docgo to http://java.sun.com/j2se/1.4.2/docs/ for all Sun doc
14
Java Virtual Machines
“HotSpot” (1.4.2)the newer VM technology from Sunnow well-exercised toodynamic, adaptivere-engineered for better performance, maintainabilitynative threads only
“Classic VM” (1.3.1)the original VM from Sunwell-exercised code basegreen threads or native threadsperformance can be improved with a JIT
What Java Runtime Compilers Do
Make Java run faster
In background, compile bytecodes of methods into native IA-32 machine code
On subsequent invocations of method, machine code is executed instead of bytecode being re-interpreted
Compilation is done while the application or applet is running hence “runtime” or “just-in-time” (JIT) in name
an execution component, not development!
16
Different Java Runtime Compilers
Classic VM “sunwjit” JIT (1.3.1)
enhanced by SCOJIT heuristics
faster start-up for GUI and other apps
http://www.sco.com/developers/java/news/jit-heur.pdf
HotSpot “client” compiler (1.4.2)
for short-, medium-lived appsfor fast start-up time, then good performancethe default
HotSpot “server” compiler (1.4.2)
maximal performance for long-running applicationslonger time to start upjava -server [… ]
17
Java Threads Models
“green threads”: Java Virtual Machine does its own multithreading and context switching; all Java threads operate within one OS thread
Java 1.3.1 OSR5many limitations
“native threads”: JVM maps Java threads, operations 1-to-1 onto OS threads
Java 1.3.1 UW7works ok but can be slow
HotSpot “native threads”: JVM optimizes mapping of Java threads and operations onto OS threads
e.g. Java synchronizations only rarely become OS mutex_lock callsJava 1.4.2 UW7 & OSR6
18
Native Threads on OpenServer 5 !?
SCO OpenServer 5 UDK threads library
UW7 libthread ported to OSR5 under UDK“available LWPs always equals one” modelrequired for Java 1.4.2
“green threads” are gone
also use for UDK C/C++ apps
SCO OpenServer 5 ABI threads library?
no, this is UDK onlynot needed for Java
19
SCO Java 1.4.2 vs. 1.3.1 Benchmark Results
SPEC JVM98 -s10 (medium-sized clients)
Java 1.4.2 is 38% faster than Java 1.3.1 on UW7… 26% faster on OSR5
SPEC JVM98 -s100 (large-sized clients)
Java 1.4.2 is 63% faster than Java 1.3.1 on UW7… 60% faster on OSR5UW7 and OSR5 roughly comparable on JVM98
SPEC JBB2000 (large three-tier server app):
Java 1.4.2 is 685% [6.8x] faster than 1.3.1 on UW7!!
using “server compiler” really shows effect of runtime compilation and threads optimizations
No such figure on OSR5 green threads hangs on 1.3.1
UW7 much faster than OSR5 for Java 1.4.2
benchmark needs kernel threads to do well
OSR6 results similar to UW7
20
The moral is …
If you’re using Java on an older OSR5
Upgrade to OSR6!If you’re using Java on an older UW7
Upgrade to UW7.1.4!Java 1.4.2 will not be backported to earlier releasesJava 1.5 will not be made available on back releases
Java as a First-class Executable
UnixWare 7.1.x, OpenServer 6 featureWhen javac is used to compile one or more classes that contain
main methods, the execute bit will be set on the resultant .class files
Then do a link: $ ln -s foo.class foo Now you can now execute a Java program named foo as follows:
$ foo
The class foo must both be in $PATH (like any other executable) and in $CLASSPATH (like any other class)
Purpose: Can now write utilities in Java without users knowing it
Native Methods
Allows Java to call C or C++ or vice versa
Must use UDK Not OSR5 Dev SysNot OSR5 GCCNot OSR6 –Kosr modeUW7 gcc okUW7 g++ not advised
JNI, JNI Invocation both supported
/usr/java/demos/native/ for commands to use
don’t guess at it!
Use debug(1) to debug; see Release Notes
Use native methods sparingly
today, most Java apps are 100% Java!
Java 1.3.1 on OSR5: green threads I/O wrapping can cause troubles
Conformance
SCO Java 2 SE implementations make no API extensions or subsets compared to the Sun/JCP baseline
SCO Java 2 SE implementations pass the latest applicable Sun/JCP Java Compatibility Kit (JCK/TCK) test suites
24
J2EE — “Enterprise Edition”
a/k/a “Java app server”The Java middleware standard for serversFor many end user app builders and ISVs, this is what you program toMany vendorsTypically not provided by OS
is this changing?
JDBC (Database)Enterprise Java BeansJavaServer PagesServletsWeb Services, XMLJNDI (Naming & Directory)CORBAJava Message ServiceTransactionsand much more
25
J2EE Vendors
ProprietaryBEA WebLogicIBM WebSpherePramativarious others
Open SourceJboss – most mindshare of open source implementations
Sun Java System Application Server – recently open sourced
Apache Geronimo – recently completed cert milestone
ObjectWeb JOnAS – from French consortium
26
J2EE on SCO UNIX
“Enterprise” features not just for “Enterprises”useful for SMB and replicated sites too
BEA WebLogic Server 8.1BEA’s most recent releasecertified for native UnixWare 7.1.4 and Java 1.4.2!
Jboss open source implementation Just download it and run, no porting necessaryUW7 users report good success with it …Will be packaged for UW 7.1.4 mp3 (Nov 2005), OSR6 mp2
(Dec)
Don’t always need the whole enchilada!for just servlets & JSP, use Tomcat 4.1.31 packageJDBC usually comes from database vendorfor SOAP/XML web services, see later on …
27
Java Serial and Parallel I/O Support
javax.comm API is an extension to Java RS-232 based serial I/OIEEE 1284 based parallel I/O
Available on OSR 5.0.7, OSR6 mp1, and UW 7.1.4based on RXTX open source implementationa good number of users on OSR5see /usr/java/javax.comm-ReleaseNotes.html for
guidelines on how to use
28
Java Serial and Parallel I/O Support
Parallel I/O guidelinessupports basic printingstatus APIs not supported
isPaperOut, isPrinterBusy, isPrinterError, etc.
USB support?full-blown USB support is a different API
javax.usb (JSR 80)
but behave-like-serial will work with javax.commmay depend on the actual driversuccess stories on OSR5
29
Java Desktop Technologies
Java Plug-inAllows modern Mozilla 1.2.1 through 1.7.x browsers on
OSR5.0.7, OSR6 & UW7.1.4 to use SCO J2SE 1.4.2 implementation
no alternative! Mozilla doesn’t have an internal JVM
Allows old Netscape 4.x browsers on OSR5 & UW7 to use SCO J2SE 1.3.1 implementation
big improvement over out-of-date, broken Netscape internal JVM
Java Web StartLaunch application (not applet) from desktop or
browser
Insufficient market demand so far
30
SCO Java Futures
Java 1.4.2_xx and 1.3.1_xxupdates with Sun patch levels (usually security fixes)
Java 1.5 (now renamed by Sun to Java 5.0)language changes: generics, autoboxing, for loops,
enums, varargs, printfSun FCS late Sept 2004SCO UNIX version for OSR6, UW7 is under way
scheduled for UW7.1.4mp4 (Apr/May 2006), OSR6 mpPackaged JBoss in earlier UW7.1.4, OSR6 maint packs
Web services
Web Services
32
Web Services Basics
Web Services – What are they?Provide layer of software abstractionMake apps available via Internet to other apps
OS, hardware, language, location agnosticIndustry-standard specifications
SOAP, XML, WSDL, UDDIDon’t need to know, tools auto generate
Bridge between J2EE and .NET
33
A Simple Sample in Java
import net.xmethods.www.*;
public class TempClientP { public static void main(String[] args) throws Exception { String zip = args[0]; TemperatureService svc = new TemperatureServiceLocator(); TemperaturePortType tp = svc.getTemperaturePort(); try { float temp = tp.getTemp(zip); System.out.println("Current temperature at zip code " + zip + " is " + temp + " degrees F."); } catch (org.apache.axis.AxisFault e) { System.err.println("Exception! " + e.toString()); } }}
34
A Simple Sample in Perl
#!/usr/bin/perl
use SOAP::Lite;
my $zip_code = shift;print "The temperature at zip code ", $zip_code, " is ";
print SOAP::Lite -> service('http://www.xmethods.net/sd/TemperatureService.wsdl') -> getTemp($zip_code);
print "\n";
35
SCO Web Services Platform Support
Three operating systemsOSR 6.0.0 mp1OSR 5.0.7 supp3UW 7.1.4
Two web service serversApacheTomcat
Five languagesJava, Perl, PHP included in each’s default set of librariesC, C++ at /usr/lib/gsoap/Demos of client use in /usr/scox/language_demos/
36
SCOx Web Services Language Support
SOAP LIBRARY XML PARSERS SECURITY
C / C++
gSOAP 2.2.3
expat libxml
OpenSSL
Java
Apache Axis 1.2 w/ fix
Apaches Xerces-J 1.4.4
JSSE within J2SE 1.4.2
Perl
SOAP::Lite
XML::Parser
IO::Socket:SSL Crypt::SSLeay
PHP
PEAR::SOAP
PHP XML (expat) PHP DOM XML (libxml)
OpenSSL curl
37
Why Java fits in with Web Services
Java excellent language to use Web Services inPart of J2EE 1.4 specificationCan also use stand-alone apart from J2EE
Language is flexible, dynamic, self-awareproxy classes, complex types, XML data binding ...
Java web services bindings are standardsJAXP, JAXB, JAX-RPC, etc.not true of other languages (C, C++, PHP ...)
Java encourages powerful middleware layers
38
SCOx Web Services Substrate (WSS)
A set of tools for modernizing applicationsWebFace, WebFace Studio
rich, browser-based, web services-based UIsuses AJAX approach, ahead of its time
SQLeexpose SQL database as a web service
WAMmanage Tomcat-deployed Java web services
Ericom® HostPublisher®extend legacy “green screen” apps via web
services
39
Availability of SCOx WSS
Now a set of tools and services for use in modernizing applicationsEngage via SCO Professional Services
40
SCO’s Java and Web Services Goals
Enable ISVs, partners, users to develop and deploy Java applications on SCO platformsThe same with web servicesComformance with standardsCompatibility with other implementationsCommitment to supportReliability, Performance, ScalabilityLegacy code connectivitySCOx Professional Services
Questions & Answers