Download SCO Java and Web Services Roadmap

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
SCO Java and Web Services Roadmap
Jonathan Schilling, SCO Engineering
1
Topics and Agenda
What is Java
Java 2 Standard Edition
Java 1.4.2
Java 2 Enterprise Edition
solutions for SCO platforms
Java Serial and Parallel I/O Support
Java Desktop Technologies
Web Services
For Java and for other languages
2
What is Java ? (First Things)
A language
object-oriented, concurrent,
distributed, self-aware
A portable runtime environment
similar to an OS but platform-independent
A set of APIs covering the breadth of an OS
A set of APIs enabling application layers
A good base for web services
A development environment
The State of Java
Dominant technology for modern programming
Portability
Enterprise
Server-side
Middleware
Web services
Also used as client GUI or as browser plug-in
Guided by Sun, built by whole industry
Java Community Process governs evolution
4
The Microsoft .NET Challenge
Does have interesting and useful technology
Imitates Java in several respects
C# language similar to Java
CIL intermediate form similar to Java bytecode
Common Language Runtime similar to JVM
… but Java now imitating .NET in a few places
Suffers from vendor and platform lock-in
Newer, less mature
Microsoft now collaborating with Sun and IBM …
Although Ballmer says interop progress has slowed
Mono .NET implementation is scheduled for SCO “Fusion”
5
SCO’s Java Involvement
SCO was a member of the
Java Community Process
(JCP) Executive
Committee
voted on “JSRs” that
define/evolve Java standard
promote adoption/growth of
the Java technology
2000 - 2004
SCO is a Sun Java source
code licensee
since 1996
basis of SCO UNIX J2SE
6
http://www.sco.com/java/
The Pieces of Java
Web
Services
J2EE
Specialty APIs:
javax.comm
Development
Tools
7
J2SE
Desktop:
Plug-in,
WebStart
What is Java 2 Standard Edition?
The central core of Java; provided with OS
Includes 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/O
applets, AWT, JFC/Swing, 2D, images, media
networking, compression, and security
distributed/component programming core:
XML, RMI, Java Beans; parts of JDBC, JNDI, CORBA
various commands
keytool, 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 testing
a/k/a Java Software Development Kit (JDK, SDK)
SCO UNIX Java Release History
JDK 1.1
May 1997
J2SE 1.2.2
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
10
Mar 2000
Dec 2000
J2SE 1.4.2 for SCO UNIX
Platform Support
SCO OpenServer 6.0.0
UnixWare 7.1.4
UnixWare 7.1.3 Update Pack 4
essentially equivalent to UW 7.1.4
SCO OpenServer 5.0.7 MP3 [UP3/SuppCD3]
requires OSRcompat v. 8.0.2 or higher
uses new user-space OSR5 UDK threads library
11
J2SE 1.3.1 for SCO UNIX
Platform Support
Unixware 7.1.4
UnixWare 7.1.3
UnixWare 7.1.2 (a/k/a Open UNIX 8)
requires Maintenance Pack 3 (ou800m3) or higher
UnixWare 7.1.1
requires Maintenance Pack 1 (uw711pk1) or higher
requires libc, libm, libC, libthread 8.0.0 or higher
SCO OpenServer 5.0.7
requires OSRcompat 8.0.1 or higher
SCO OpenServer 5.0.6
requires OSRcompat 8.0.1 or higher
requires OSS643A
12
J2SE 1.4.2 for SCO UNIX
Packages
Package j2jre142
runtime support
Package j2sdk142
developer support, demos
Package j2plg142
Java Plug-in support for Mozilla browser
All of above installed by default
install from download site for later patch releases
pkgadd format for UW7, custom format for OSR5 and OSR6
/usr/java/ReleaseNotes.html is release doc
go to http://java.sun.com/j2se/1.4.2/docs/ for all Sun doc
13
Java Virtual Machines
“Classic VM” (1.3.1)
the original VM from Sun
well-exercised code base
green threads or native
threads
performance can be improved
with a JIT
14
“HotSpot” (1.4.2)
the newer VM technology
from Sun
now well-exercised too
dynamic, adaptive
re-engineered for better
performance, maintainability
native threads only
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 reinterpreted
Compilation is done while the application or applet
is running
hence “runtime” or “just-in-time” (JIT) in name
an execution component, not development!
Different Java Runtime Compilers
Classic VM “sunwjit”
JIT (1.3.1)
enhanced by SCO
JIT heuristics
faster start-up for GUI and
other apps
http://www.sco.com/developer
s/java/news/jit-heur.pdf
HotSpot “client”
compiler (1.4.2)
for short-, medium-lived
apps
for fast start-up time, then
good performance
the default
HotSpot “server”
compiler (1.4.2)
maximal performance for
long-running applications
longer time to start up
java -server [… ]
16
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 OSR5
many limitations
“native threads”: JVM maps
Java threads, operations 1-to-1
onto OS threads
Java 1.3.1 UW7
works ok but can be slow
17
HotSpot “native threads”: JVM
optimizes mapping of Java
threads and operations onto
OS threads
e.g. Java synchronizations only
rarely become OS mutex_lock
calls
Java 1.4.2 UW7 & OSR6
Native Threads on OpenServer 5 !?
SCO OpenServer 5 UDK
threads library
UW7 libthread ported to OSR5
under UDK
“available LWPs always equals
one” model
required 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 only
not needed for Java
18
SCO Java 1.4.2 vs. 1.3.1
Benchmark Results
SPEC JVM98 -s10 (mediumsized clients)
Java 1.4.2 is 38% faster than
Java 1.3.1 on UW7
… 26% faster on OSR5
SPEC JVM98 -s100 (largesized clients)
Java 1.4.2 is 63% faster than
Java 1.3.1 on UW7
… 60% faster on OSR5
UW7 and OSR5 roughly
comparable on JVM98
19
SPEC JBB2000 (large threetier 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
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 releases
Java 1.5 will not be made
available on back releases
20
Java as a First-class Executable
UnixWare 7.1.x, OpenServer 6 feature
When 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 Sys
Not OSR5 GCC
Not OSR6 –Kosr mode
UW7 gcc ok
UW7 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
J2EE — “Enterprise Edition”
a/k/a “Java app server”
The Java middleware
standard for servers
For many end user app
builders and ISVs, this is
what you program to
Many vendors
Typically not provided by OS
is this changing?
24
JDBC (Database)
Enterprise Java Beans
JavaServer Pages
Servlets
Web Services, XML
JNDI (Naming & Directory)
CORBA
Java Message Service
Transactions
and much more
J2EE Vendors
Proprietary
BEA WebLogic
IBM WebSphere
Pramati
various others
Open Source
Jboss – 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
25
J2EE on SCO UNIX
“Enterprise” features not just for “Enterprises”
useful for SMB and replicated sites too
BEA WebLogic Server 8.1
BEA’s most recent release
certified for native UnixWare 7.1.4 and Java 1.4.2!
Jboss open source implementation
Just download it and run, no porting necessary
UW7 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 package
JDBC usually comes from database vendor
for SOAP/XML web services, see later on …
26
Java Serial and Parallel I/O Support
javax.comm API is an extension to Java
RS-232 based serial I/O
IEEE 1284 based parallel I/O
Available on OSR 5.0.7, OSR6 mp1, and UW 7.1.4
based on RXTX open source implementation
a good number of users on OSR5
see /usr/java/javax.comm-ReleaseNotes.html for
guidelines on how to use
27
Java Serial and Parallel I/O Support
Parallel I/O guidelines
supports basic printing
status 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.comm
may depend on the actual driver
success stories on OSR5
28
Java Desktop Technologies
Java Plug-in
Allows 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 Start
Launch application (not applet) from desktop
or browser
Insufficient market demand so far
29
SCO Java Futures
Java 1.4.2_xx and 1.3.1_xx
updates 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, printf
Sun FCS late Sept 2004
SCO UNIX version for OSR6, UW7 is under way
scheduled for UW7.1.4mp4 (Apr/May 2006), OSR6 mp
Packaged JBoss in earlier UW7.1.4, OSR6 maint packs
Web services
30
Web Services
Web Services Basics
Web Services – What are they?
Provide layer of software abstraction
Make apps available via Internet to other apps
OS, hardware, language, location agnostic
Industry-standard specifications
SOAP, XML, WSDL, UDDI
Don’t need to know, tools auto generate
Bridge between J2EE and .NET
32
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());
}
}
}
33
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";
34
SCO Web Services Platform Support
Three operating systems
OSR 6.0.0 mp1
OSR 5.0.7 supp3
UW 7.1.4
Two web service servers
Apache
Tomcat
Five languages
Java, Perl, PHP included in each’s default set of libraries
C, C++ at /usr/lib/gsoap/
Demos of client use in /usr/scox/language_demos/
35
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
36
Why Java fits in with Web Services
Java excellent language to use Web Services in
Part of J2EE 1.4 specification
Can also use stand-alone apart from J2EE
Language is flexible, dynamic, self-aware
proxy classes, complex types, XML data binding ...
Java web services bindings are standards
JAXP, JAXB, JAX-RPC, etc.
not true of other languages (C, C++, PHP ...)
Java encourages powerful middleware layers
37
SCOx Web Services Substrate (WSS)
A set of tools for modernizing applications
WebFace, WebFace Studio
rich, browser-based, web services-based UIs
uses AJAX approach, ahead of its time
SQLe
expose SQL database as a web service
WAM
manage Tomcat-deployed Java web services
Ericom® HostPublisher®
extend legacy “green screen” apps via web services
38
Availability of SCOx WSS
Now a set of tools and
services for use in
modernizing applications
Engage via SCO Professional
Services
39
SCO’s Java and Web Services Goals
Enable ISVs, partners, users to
develop and deploy Java
applications on SCO platforms
The same with web services
Comformance with standards
Compatibility with other
implementations
Commitment to support
Reliability, Performance,
Scalability
Legacy code connectivity
SCOx Professional Services
40
Questions & Answers