SCO Java and Web Services Roadmap

slimwhimperΛογισμικό & κατασκευή λογ/κού

3 Νοε 2013 (πριν από 4 χρόνια και 6 μέρες)

144 εμφανίσεις

1

SCO Java and Web Services Roadmap


Jonathan Schilling, SCO Engineering

2

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

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

4

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

5

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”


6

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

http://www.sco.com/java/

7

The Pieces of Java

J2EE

Web

Services

J2SE

Development

Tools

Specialty APIs:

javax.comm

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)

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
200
5
(latest
)


JDK 1.1.7A

Mar 1999

J2SE 1.4.2_03

May 2004

JDK 1.1.7B

Oct 1999

J2
SE 1.4.2_0
8

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 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


12

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

13

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


14

Java Virtual Machines

“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

“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



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 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 [… ]

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 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

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


18

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


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 OSR5

UW7 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 releases

Java 1.5 will
not

be made
available on back releases

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

24

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?

JDBC (Database)

Enterprise Java Beans

JavaServer Pages

Servlets

Web Services, XML

JNDI (Naming & Directory)

CORBA

Java Message Service

Transactions

and much more


25

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

26

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 …

27

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



28

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

29

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



30

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

Web Services

32

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

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 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/

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::Sock
et: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 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


38

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

39

Availability of SCOx WSS

Now a set of tools and
services for use in
modernizing applications

Engage via SCO Professional
Services

40

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

Comfor
m
ance with standards

Compatibility with other
implementations

Commitment to support

Reliability, Performance,
Scalability

Legacy code connectivity

SCOx Professional Services


Questions & Answers