1. Lyhenne- ja termiluettelo
2. Johdanto
3. Mikä on Java ?
3.1 Olio-ohjelmointi
3.2 Kielioppi
3.3 Java vs. C++
3.4 Javan ikkunat ja nappulat
3.5 AWT - Abstract Window Toolkit
3.6 Java lähdekoodi toimivaksi ohjelmaksi
3.7 Javan rakenne
3.8 Hyödyt
3.9 Haitat
4. Java ja WWW
4.1 Javan kaupallinen käyttö
4.2 Javan tämän hetkinen asema Internetissä
4.3 Kilpailijoita
5. Yhteenveto
6. Kirjallisuusviitteet
7. Liitteet
7.1 Liite 1 Javan paketit, luokat ja rajapinnat
Seuraavassa on lueteltu esitelmässä käytetyt lyhenteet
Internet | Verkkojen verkko, maailmanlaajuinen tietoliikenneverkkko, joka yhdistää usean mantereen tietokoneet toisiinsa. |
WWW | World Wide Web, Internetin käytössä oleva palvelu, jonka avulla voidaan jakaa tietoa, tekstiä ja kuvia miljoonien ihmisten kesken. |
HTML | Hyper Text Markup Language, kieli WWW-sivujen rakentamiseen. |
HTTP | Hyper Text Transfer Protocol, protokolla WWW-sivujen siirtämiseen Internetissä. |
Applet | Ohjelmanen, pieni ohjelman pala, jonka suorittamiseen tarvitaan Java-ominaisuuksien avulla varustettu WWW-selailuohjelma. |
Hotjava | WWW-selailuohjelma, joka tukee Java-kieltä. |
Java | Olio-ohjelmointikieli. |
CGI | Common Gateway Interface. |
Vuonna 1990 CERN:issä kehitettiin HTML-kieli, WWW-client ja WWW-server, joiden avulla tutkijat pystyvät jakamaan tietoa hyvin nopeasti koko maailmaan. Aluksi WWW oli akateemisen mielenkiinnon kohteena, mutta viime vuosina WWW on levinnyt kaupalliselle sektorille. Tällä hetkellä lähes kaikki suuret yritykset ovat mukana WWW:ssä jossain määrin. Suurten yritysten mielenkiintoa herättää lähinnä Internet verkon mahdollisuus saavuttaa kymmeniä miljoonia ihmisiä suhteellisen alhaisilla peruskustannuksilla. WWW-serverin pystyttämiseen riittää PC-mikro, sopiva käyttöjärjestelmä ja ohjelmisto, sekä kiinteä verkkoyhteys.
Samalla aikajänteella on kehitetty C ohjelmointikielen korvaajaksi C++ kieltä. C++ kielen heikkous tosin on, että se antaa ohjelmoijalle hyvin suuren ilmaisuvoiman, mikä puolestaan johtaa helposti virheelliseen koodiin ja monimutkaisiin ohjelmiin.
Java on objektiorientoitunut ohjelmointikieli, jonka juuret syntaksin ja perusideologian puolesta ovat hyvin lähellä C++ kieltä. Alunperin Java-kieli oli tarkoitus kehittää sulautettuihin systeemeihin, esimerkiksi pesukoneisiin ja taskumuistioihin. Näissä systeemeissä on tärkeää, että ohjelma on toimiva, virheetön, laiteriippumaton ja selviytyy mahdollisista virhetilanteista luotettavasti. Samanlaisia vaatimuksia ohjelman toimivuuden suhteen on havaittavissa myös WWW:ssä, jossa ohjelman halutaan toimivan useissa laiteympäristöissä ja luotettavasti. Aikaisemmin HTML-kieli on mahdollistanut vain tekstin ja lomakkeiden siirron eri tietokoneiden välillä. Jotain toiminnallisuutta on saatu aikaan kirjoittamalla, joko shell-skriptejä tai cgi-bin ohjelmia. Näiden heikkoutena tosin on ollut, että niissä on ollut monia turvallisuusaukkoja, joita erilaiset kriminaalit ovat voineet hyödyntää. Javan on tarkoitus olla ensimmäinen toimiva ratkaisu luotettavien ja turvallisten ohjelmien luomiseen WWW:hen. Javan kehitystyötä on johtanut James Gosling Sun-yhtiössä. Java julkistettiin toukokuussa 1995.
Java on olioperusteinen ohjelmointikieli. Seuraavassa on lyhyt esimerkki Java-koodista.
Java appletin esimerkkikoodia
import java.applet.Applet; import java.awt.Graphics; public class HelloWorld extends Applet { public void paint(Graphics g) { g.drawString("Hei julma maailma",10,10); } }
Javassa on siis luokkia (kts. kohta public class.) sekä metodeja (kts. kohta public void paint(Graphics)), joiden avulla ohjelmaan saadaan haluttu toiminnallisuus.
Olio-ohjelmointikielellä tarkoitetaan kieltä, jossa on luokkia, joilla määritellään funktioiden ominaisuuksia sekä olioita, toiminnallisia osia, jotka muodostetaan luokkien pohjilta toteuttamaan jokin tietty ominaisuus. Olio-ohjelmoinnin hyviä puolia on sen luoma modulaarinen malli, ns. Black Box-malli, jossa kunkin luokan sisäisiä ominaisuuksia voidaan muuttaa ilman, että koko kokonaisuutta täytyy huomioida. Eri luokat kommunikoivat toistensa kanssa hyvin määriteltyjen rajapintojen avulla. Tyypillisessä luokkakuvauksessa on kulloisenkin luokan instanssimuuttujat, luokkamuuttujat ja luokkaan kuuluvat metodit.
Luokka ja siitä periytettyjä olioita.
Javan kielioppi pohjautuu paljolti C:hen ja C++:aan, joten syntaksi on samanlaista. Joitakin C:n ominaisuuksia on poistettu ja joitakin lisäominaisuuksia lisätty. Näin on pyritty saamaan virhevapaampi ohjelmointikieli. Javassa on mukana kirjastoja, joihin on toteutettu luokkia ja metodeja, lähinnä erilaisten applet:ien, nappuloiden ja ikkunoiden luomiseen. Javan paketit, luokat ja rajapinnat on tarkemmin lueteltu liitteessä 1.
Javassa ei ole seuraavia C++:n ominaisuuksia.
Moniperiytyvyyteen Java tosin tarjoaa rajapinnat (interfaces),
joiden avulla saadaan luokkia jaettua eri luokkien kesken. Lisäksi
Javassa on automaattinen roskienkäsittely (carbage collection).
Javassa ohjelmoijan ei sallita käsitellä muistiavaruutta suoraan.
Javan perusluokat tarjoavat luokkia, erilaisten applettien, ikkunoiden,
grafiikan, tekstin ja syöttöfunktioiden tekoon. Näin
ollen Javaa käytetään paljon erilaisten käyttöliittymien
luomiseen sekä kommunikointiin käyttäjän kanssa.
AWT on luokka, jonka avulla luodaan erilaisia säiliöitä
(ikkunoita), jotka puolestaan sisältävät aliluokkia
erilaisten nappuloiden, scrollbarien sekä muiden ikkunan
osasten tekoon.
Alla on kuvattu AWT:n luokkahierarkia.
Javaohjelmia voidaan kääntää itsenäisiksi
ohjelmiksi, joita voidaan ajaa Java tulkin avulla. Toinen vaihtoehto
on tehdä Java-ohjelmista appletteja, pieniä ohjelmapalasia.
Mielenkiintoisia ovat appletit, jotka toimivat useissa laiteympäristöissä.
Appletteja voidaan myös siirtää hyvin helposti
WWW:ssä, koska ne ovat pieniä ohjelmia. Lisäksi
useisiin WWW-lukuohjelmiin, kuten Netscape ja Microsoft Explorer,
on rakennettu Java tuki, joten ne pystyvät käyttämään
Javaa suoraan ilman erillistä Java-tulkkia.
Javan hierarkia,
jossa alimmaisena osana on tietokone, sitten konekohtainen Javatulkki,
tavukoodi ja Java-lähdekoodi.
Java ohjelman tuottamisessa ensiksi Java-lähdekoodi käännetään
ns. tavukoodiksi, jota voidaan ajaa useissa eri laiteympäristöissä
Java-tulkin avulla. Lähdekoodin päätteenä
käytetään .java-merkintää. Vastaavasti
tavukoodin pääte on .class. Tavukoodi ei toimi suoraan
missään prosessorissa, vaan sen suorittamiseen tarvitaan
aina konekohtainen tulkki.
Windows ympäristössä on olemassa seuraavat Java
työkaluohjelmat Java-ohjelmien kehittämiseen.
3.3 Java vs. C++
3.4 Javan ikkunat ja nappulat
3.5 AWT - Abstract Window Toolkit
3.6 Java lähdekoodi toimivaksi ohjelmaksi
3.7 Javan rakenne
appletviewer | Applettien kehitystyökalu, suorittaa applet Java-koodin. |
java | Java tulkki, suorittaa käännetyn tavukoodin. |
javac | Java kääntäjä, kääntää Java-lähdekoodin tavukoodiksi. |
javadoc | Mahdollistaa automaattisen dokumentaation luonnin lähdekoodista. |
javah | Mahdollistaa Java-ohjelmien liittämisen C-ohjelmiin. |
javap | Javan disassembler. |
jdb | Javan debuggeri. |
Ohjelmointikielenä Java on suhteellisen pieni. Itse Java tulkin koko on muutamia satoja kilotavuja. Näin ollen Java- ohjelmia voidaan suorittaa pienissäkin tietokoneissa ja järjestelmissä. Itse Java-tulkki vaatii noin 4 Mb muistia tietokoneelta, jotta se voisi kääntää Java-ohjelmia tavukoodiksi.
Olio-ohjelmointi tuo mukanaan muutamia ei-toivottuja piirteitä. Ohjelmien koot kasvavat helposti suuriksi. Lisäksi ohjelmoijalla on vähemmän mahdollisuuksia optimoida koodia. Ohjelmia ei voi enää suunnitella funktionaaliselta pohjalta, vaan ohjelmien rakenteen täytyy noudattaa luokka-oliomallia.
Java kieleen on upotettu muutamia ominaisuuksia, jotka mahdollistavat tiedonkeruun WWW:tä selaavilta käyttäjiltä. Näin ollen WWW-lukuohjelmiin tulisi sisällyttää optio, jolla tiedonkeruuta voitaisiin säädellä. Käyttäjien tiedostot ovat turvassa, sillä Java kielessä ei ole ominaisuuksia, joilla voisi suoraan lukea tai kirjoittaa käyttäjän tiedostoja.
Java-appletin siirto Internetin läpi. Tietokoneesta A siirretään toiseen tietokoneeseen B Java-applet-ohjelma.
Tavallisen Java-ohjelman käyttäjän kannalta mukavimman käyttöliittymän tarjoavat erilaiset WWW-lukuohjelmat. Näissä ohjelmissa on upotettu Java-tuki, joka huolehtii automaattisesti, Java ohjelman hakemisen WWW-serveristä ja sen käynnistämisestä käyttäjän tietokoneessa. Ennen koodin suorittamista Java-tulkki verifioi koodin ja tarkistaa, että koodi ei tee mitään luvatonta. Jos koodissa on virhe, niin siitä tulee keskeytys (exception), joka käsitellään erillisessä virheenkäsittelijässä.
Java tarjoaa mahdollisuuden kehittää WWW:hen toimivia ja turvallisia ohjelmia, joiden avulla WWW:n käyttäjät voivat katsella erilaisia graafeja, esimerkiksi pörssikursseja kuin myös muita tietokantahakuja. Java mahdollistaa myös informaation keruun WWW:n käyttäjältä.
Runsaan parin vuoden aikana Java on saavuttanut Internetissä varsin merkittävän aseman. Java on noteerattu myös useissa aikakausilehdissä, mm. Time Magazinessa, Internetin ohjelmointikielenä.
Tällä hetkellä Javalle ei ole olemassa juurikaan
kilpailijoita. Alun perin WWW:hen kehitettiin CGI (Common Gateway
Interface), jonka avulla voitaisiin tarjota rajapinta ohjelmille,
jotka toisivat verkkoon funktionaalisuutta. CGI-bin ohjelmissa
on tällä hetkellä pahoja tietoturvaongelmia, mikä
laskee CGI-bin ohjelmien suosiota ohjelmissa. Myös Javassa
on tietoturvaongelmia, joista useimmat on jo korjattu.
Artikkelissa Java, The illusion pyritään tuomaan esille
se, että Internetin ohjelmointikielen pitäisi olla mahdollisimman
vapaavalintainen. Kirjoittaja esittää näkemyksen,
että Internettiin tulisi voida kirjoittaa ohjelmia myös
Pascalilla, Eiffelillä, Schemellä, ja muilla ohjelmointikielillä.
Hän ei myöskään pidä siitä, että
Javan syntaksi ja ohjelmointi on hyvin monimutkaista.
Artikkeli Java One year out kertoo joitakin lukuja, jotka kuvastavat
Javan kasvua Internetissä. Gamelan palvelimessa julkaistujen
Java applet-ohjelmien määrä oli 1.2.96 1081 kappaletta.
15.7.96 vastaava luku oli 3676 kappaletta. Myös Javan news-ryhmissä
on ollut vilkasta keskustelua Javasta. Keskimäärin comp.lang.java
newsryhmässä on ollut viikoittain 2000 viestiä Javasta.
Tällä hetkellä Javaa vielä kehitetään
eteenpäin, jotta se voisi toimia tulevaisuuden verkkotietokoneissa.
Muutenkin näyttäisi siltä, että tietokoneala
on siirtymässä henkilökohtaisesta tietojenkäsittelystä
verkkotietokoneisiin. Verkkotietokoneiden edullisuus ja ohjelmistojen
helppo ylläpito luovat kustannustehokkuutta moniin suuriin
yrityksiin, joissa tällä hetkellä on paljon ylläpitohenkilökuntaa
vain hoitamassa mikrojen ohjelmistojen päivityksiä.
Java on tehokas, turvallinen ja laiteriippumaton olio-ohjelmointikieli,
jolla on jännittävä tulevaisuus edessään
yhä laajentuvassa Internetissä.
4.3 Kilpailijoita
5. Yhteenveto
6. Kirjallisuusviitteet
JDK 1.1 Beta Class List
The following is a list of all public class in the java.* packages in JDK 1.1beta3. This list is gathered from the javadoc-generated HTML documents. The count is:
JDK 1.0.2 | JDK 1.1beta3 | |
Public java.* packages | 8 | 23 |
Public java.* classes and interfaces | 211 | 503 |
(Program used to generate list: /bin/diffclassnames.sh)
+ Plus sign means the package, class or interface is new for JDK 1.1
Note: Classes without plus signs may have methods added to them for 1.1.
Packages
java.applet
+ java.awt.datatransfer
+ java.awt.event
java.awt
java.awt.image
java.awt.peer
+ java.beans
java.io
java.lang
+ java.lang.reflect
+ java.math
java.net
+ java.rmi.dgc
+ java.rmi
+ java.rmi.registry
+ java.rmi.server
+ java.security.acl
+ java.security
+ java.security.interfaces
+ java.sql
+ java.text
java.util
+ java.util.zip
The following packages are are included in the API reference documentation, but are not included in the above summary package count, since they are outside of java.*:
sun.tools.debug
+ sunw.io
+ sunw.util
Classes and Interfaces
java.applet.Applet
java.applet.AppletContext
java.applet.AppletStub
java.applet.AudioClip
java.awt.AWTError
+ java.awt.AWTEvent
+ java.awt.AWTEventMulticaster
java.awt.AWTException
+ java.awt.Adjustable
java.awt.BorderLayout
java.awt.Button
java.awt.Canvas
java.awt.CardLayout
java.awt.Checkbox
java.awt.CheckboxGroup
java.awt.CheckboxMenuItem
java.awt.Choice
java.awt.Color
java.awt.Component
java.awt.Container
+ java.awt.Cursor
java.awt.Dialog
java.awt.Dimension
java.awt.Event
+ java.awt.EventQueue
+ java.awt.EventSource
java.awt.FileDialog
java.awt.FlowLayout
java.awt.Font
java.awt.FontMetrics
java.awt.Frame
java.awt.Graphics
java.awt.GridBagConstraints
java.awt.GridBagLayout
java.awt.GridLayout
+ java.awt.IllegalComponentStateException
java.awt.Image
java.awt.Insets
+ java.awt.ItemSelectable
java.awt.Label
java.awt.LayoutManager
+ java.awt.LayoutManager2
java.awt.List
java.awt.MediaTracker
java.awt.Menu
java.awt.MenuBar
java.awt.MenuComponent
java.awt.MenuContainer
java.awt.MenuItem
+ java.awt.MenuShortcut
java.awt.Panel
java.awt.Point
java.awt.Polygon
+ java.awt.PopupMenu
+ java.awt.PrintGraphics
+ java.awt.PrintJob
java.awt.Rectangle
+ java.awt.ScrollPane
java.awt.Scrollbar
+ java.awt.Shape
+ java.awt.SystemColor
java.awt.TextArea
java.awt.TextComponent
java.awt.TextField
java.awt.Toolkit
java.awt.Window
+ java.awt.datatransfer.Clipboard
+ java.awt.datatransfer.ClipboardOwner
+ java.awt.datatransfer.DataFlavor
+ java.awt.datatransfer.StringSelection
+ java.awt.datatransfer.Transferable
+ java.awt.datatransfer.UnsupportedFlavorException
+ java.awt.event.ActionEvent
+ java.awt.event.ActionListener
+ java.awt.event.AdjustmentEvent
+ java.awt.event.AdjustmentListener
+ java.awt.event.ComponentAdapter
+ java.awt.event.ComponentEvent
+ java.awt.event.ComponentListener
+ java.awt.event.ContainerAdapter
+ java.awt.event.ContainerEvent
+ java.awt.event.ContainerListener
+ java.awt.event.FocusAdapter
+ java.awt.event.FocusEvent
+ java.awt.event.FocusListener
+ java.awt.event.InputEvent
+ java.awt.event.ItemEvent
+ java.awt.event.ItemListener
+ java.awt.event.KeyAdapter
+ java.awt.event.KeyEvent
+ java.awt.event.KeyListener
+ java.awt.event.MouseAdapter
+ java.awt.event.MouseEvent
+ java.awt.event.MouseListener
+ java.awt.event.MouseMotionAdapter
+ java.awt.event.MouseMotionListener
+ java.awt.event.PaintEvent
+ java.awt.event.TextEvent
+ java.awt.event.TextListener
+ java.awt.event.WindowAdapter
+ java.awt.event.WindowEvent
+ java.awt.event.WindowListener
+ java.awt.image.AverageScaleFilter
java.awt.image.ColorModel
java.awt.image.CropImageFilter
java.awt.image.DirectColorModel
java.awt.image.FilteredImageSource
java.awt.image.ImageConsumer
java.awt.image.ImageFilter
java.awt.image.ImageObserver
java.awt.image.ImageProducer
java.awt.image.IndexColorModel
java.awt.image.MemoryImageSource
java.awt.image.PixelGrabber
java.awt.image.RGBImageFilter
+ java.awt.image.ReplicateScaleFilter
java.awt.peer.ButtonPeer
java.awt.peer.CanvasPeer
java.awt.peer.CheckboxMenuItemPeer
java.awt.peer.CheckboxPeer
java.awt.peer.ChoicePeer
java.awt.peer.ComponentPeer
java.awt.peer.ContainerPeer
java.awt.peer.DialogPeer
java.awt.peer.FileDialogPeer
+ java.awt.peer.FontPeer
java.awt.peer.FramePeer
java.awt.peer.LabelPeer
+ java.awt.peer.LightweightPeer
java.awt.peer.ListPeer
java.awt.peer.MenuBarPeer
java.awt.peer.MenuComponentPeer
java.awt.peer.MenuItemPeer
java.awt.peer.MenuPeer
java.awt.peer.PanelPeer
+ java.awt.peer.PopupMenuPeer
+ java.awt.peer.ScrollPanePeer
java.awt.peer.ScrollbarPeer
java.awt.peer.TextAreaPeer
java.awt.peer.TextComponentPeer
java.awt.peer.TextFieldPeer
java.awt.peer.WindowPeer
+ java.beans.BeanDescriptor
+ java.beans.BeanInfo
+ java.beans.Beans
+ java.beans.Customizer
+ java.beans.EventSetDescriptor
+ java.beans.FeatureDescriptor
+ java.beans.IndexedPropertyDescriptor
+ java.beans.IntrospectionException
+ java.beans.Introspector
+ java.beans.MethodDescriptor
+ java.beans.ParameterDescriptor
+ java.beans.PropertyChangeEvent
+ java.beans.PropertyChangeListener
+ java.beans.PropertyChangeSupport
+ java.beans.PropertyDescriptor
+ java.beans.PropertyEditor
+ java.beans.PropertyEditorManager
+ java.beans.PropertyEditorSupport
+ java.beans.PropertyVetoException
+ java.beans.SimpleBeanInfo
+ java.beans.VetoableChangeListener
+ java.beans.VetoableChangeSupport
+ java.beans.Visibility
java.io.BufferedInputStream
java.io.BufferedOutputStream
+ java.io.BufferedReader
+ java.io.BufferedWriter
java.io.ByteArrayInputStream
java.io.ByteArrayOutputStream
+ java.io.CharArrayReader
+ java.io.CharArrayWriter
+ java.io.CharConversionException
java.io.DataInput
java.io.DataInputStream
java.io.DataOutput
java.io.DataOutputStream
java.io.EOFException
+ java.io.Externalizable
java.io.File
java.io.FileDescriptor
java.io.FileInputStream
java.io.FileNotFoundException
java.io.FileOutputStream
+ java.io.FileReader
+ java.io.FileWriter
java.io.FilenameFilter
java.io.FilterInputStream
java.io.FilterOutputStream
+ java.io.FilterReader
+ java.io.FilterWriter
java.io.IOException
java.io.InputStream
+ java.io.InputStreamReader
java.io.InterruptedIOException
+ java.io.InvalidClassException
+ java.io.InvalidObjectException
java.io.LineNumberInputStream
+ java.io.LineNumberReader
+ java.io.NotActiveException
+ java.io.NotSerializableException
+ java.io.ObjectInput
+ java.io.ObjectInputStream
+ java.io.ObjectInputValidation
+ java.io.ObjectOutput
+ java.io.ObjectOutputStream
+ java.io.ObjectStreamClass
+ java.io.ObjectStreamException
+ java.io.OptionalDataException
java.io.OutputStream
+ java.io.OutputStreamWriter
java.io.PipedInputStream
java.io.PipedOutputStream
+ java.io.PipedReader
+ java.io.PipedWriter
java.io.PrintStream
+ java.io.PrintWriter
java.io.PushbackInputStream
+ java.io.PushbackReader
java.io.RandomAccessFile
+ java.io.Reader
java.io.SequenceInputStream
+ java.io.Serializable
+ java.io.StreamCorruptedException
java.io.StreamTokenizer
java.io.StringBufferInputStream
+ java.io.StringReader
+ java.io.StringWriter
+ java.io.SyncFailedException
java.io.UTFDataFormatException
+ java.io.UnsupportedEncodingException
+ java.io.WriteAbortedException
+ java.io.Writer
java.lang.AbstractMethodError
java.lang.ArithmeticException
java.lang.ArrayIndexOutOfBoundsException
java.lang.ArrayStoreException
java.lang.Boolean
+ java.lang.Byte
java.lang.Character
java.lang.Class
java.lang.ClassCastException
java.lang.ClassCircularityError
java.lang.ClassFormatError
java.lang.ClassLoader
java.lang.ClassNotFoundException
java.lang.CloneNotSupportedException
java.lang.Cloneable
java.lang.Compiler
java.lang.Double
java.lang.Error
java.lang.Exception
+ java.lang.ExceptionInInitializerError
java.lang.Float
java.lang.IllegalAccessError
java.lang.IllegalAccessException
java.lang.IllegalArgumentException
java.lang.IllegalMonitorStateException
+ java.lang.IllegalStateException
java.lang.IllegalThreadStateException
java.lang.IncompatibleClassChangeError
java.lang.IndexOutOfBoundsException
java.lang.InstantiationError
java.lang.InstantiationException
java.lang.Integer
java.lang.InternalError
java.lang.InterruptedException
java.lang.LinkageError
java.lang.Long
java.lang.Math
java.lang.NegativeArraySizeException
java.lang.NoClassDefFoundError
java.lang.NoSuchFieldError
+ java.lang.NoSuchFieldException
java.lang.NoSuchMethodError
java.lang.NoSuchMethodException
java.lang.NullPointerException
java.lang.Number
java.lang.NumberFormatException
java.lang.Object
java.lang.OutOfMemoryError
java.lang.Process
java.lang.Runnable
java.lang.Runtime
java.lang.RuntimeException
java.lang.SecurityException
java.lang.SecurityManager
+ java.lang.Short
java.lang.StackOverflowError
java.lang.String
java.lang.StringBuffer
java.lang.StringIndexOutOfBoundsException
java.lang.System
java.lang.Thread
java.lang.ThreadDeath
java.lang.ThreadGroup
java.lang.Throwable
java.lang.UnknownError
java.lang.UnsatisfiedLinkError
java.lang.VerifyError
java.lang.VirtualMachineError
+ java.lang.Void
+ java.lang.reflect.Array
+ java.lang.reflect.Constructor
+ java.lang.reflect.Field
+ java.lang.reflect.InvocationTargetException
+ java.lang.reflect.Member
+ java.lang.reflect.Method
+ java.lang.reflect.Modifier
+ java.math.BigDecimal
+ java.math.BigInteger
+ java.net.BindException
+ java.net.ConnectException
java.net.ContentHandler
java.net.ContentHandlerFactory
java.net.DatagramPacket
java.net.DatagramSocket
+ java.net.DatagramSocketImpl
+ java.net.FileNameMap
+ java.net.HttpURLConnection
java.net.InetAddress
java.net.MalformedURLException
+ java.net.MulticastSocket
+ java.net.NoRouteToHostException
java.net.ProtocolException
java.net.ServerSocket
java.net.Socket
java.net.SocketException
java.net.SocketImpl
java.net.SocketImplFactory
java.net.URL
java.net.URLConnection
java.net.URLEncoder
java.net.URLStreamHandler
java.net.URLStreamHandlerFactory
java.net.UnknownHostException
java.net.UnknownServiceException
+ java.rmi.AccessException
+ java.rmi.AlreadyBoundException
+ java.rmi.ConnectException
+ java.rmi.ConnectIOException
+ java.rmi.MarshalException
+ java.rmi.Naming
+ java.rmi.NoSuchObjectException
+ java.rmi.NotBoundException
+ java.rmi.RMISecurityException
+ java.rmi.RMISecurityManager
+ java.rmi.Remote
+ java.rmi.RemoteException
+ java.rmi.ServerError
+ java.rmi.ServerException
+ java.rmi.ServerRuntimeException
+ java.rmi.StubNotFoundException
+ java.rmi.UnexpectedException
+ java.rmi.UnknownHostException
+ java.rmi.UnmarshalException
+ java.rmi.dgc.DGC
+ java.rmi.dgc.Lease
+ java.rmi.dgc.VMID
+ java.rmi.registry.LocateRegistry
+ java.rmi.registry.Registry
+ java.rmi.registry.RegistryHandler
+ java.rmi.server.ExportException
+ java.rmi.server.LoaderHandler
+ java.rmi.server.LogStream
+ java.rmi.server.ObjID
+ java.rmi.server.Operation
+ java.rmi.server.RMIClassLoader
+ java.rmi.server.RMIFailureHandler
+ java.rmi.server.RMISocketFactory
+ java.rmi.server.RemoteCall
+ java.rmi.server.RemoteObject
+ java.rmi.server.RemoteRef
+ java.rmi.server.RemoteServer
+ java.rmi.server.RemoteStub
+ java.rmi.server.ServerCloneException
+ java.rmi.server.ServerNotActiveException
+ java.rmi.server.ServerRef
+ java.rmi.server.Skeleton
+ java.rmi.server.SkeletonMismatchException
+ java.rmi.server.SkeletonNotFoundException
+ java.rmi.server.SocketSecurityException
+ java.rmi.server.UID
+ java.rmi.server.UnicastRemoteObject
+ java.rmi.server.Unreferenced
+ java.security.Certificate
+ java.security.DigestException
+ java.security.DigestInputStream
+ java.security.DigestOutputStream
+ java.security.Identity
+ java.security.IdentityScope
+ java.security.InvalidKeyException
+ java.security.InvalidParameterException
+ java.security.Key
+ java.security.KeyException
+ java.security.KeyManagementException
+ java.security.KeyPair
+ java.security.KeyParams
+ java.security.MessageDigest
+ java.security.NoSuchAlgorithmException
+ java.security.NoSuchProviderException
+ java.security.Principal
+ java.security.PrivateKey
+ java.security.Provider
+ java.security.ProviderException
+ java.security.PublicKey
+ java.security.SecureRandom
+ java.security.Security
+ java.security.Signature
+ java.security.SignatureException
+ java.security.Signer
+ java.security.acl.Acl
+ java.security.acl.AclEntry
+ java.security.acl.AclNotFoundException
+ java.security.acl.Group
+ java.security.acl.LastOwnerException
+ java.security.acl.NotOwnerException
+ java.security.acl.Owner
+ java.security.acl.Permission
+ java.security.interfaces.DSAKey
+ java.security.interfaces.DSAParams
+ java.security.interfaces.DSAPublicKey
+ java.sql.CallableStatement
+ java.sql.Connection
+ java.sql.DataTruncation
+ java.sql.DatabaseMetaData
+ java.sql.Date
+ java.sql.Driver
+ java.sql.DriverManager
+ java.sql.DriverPropertyInfo
+ java.sql.PreparedStatement
+ java.sql.ResultSet
+ java.sql.ResultSetMetaData
+ java.sql.SQLException
+ java.sql.SQLWarning
+ java.sql.Statement
+ java.sql.Time
+ java.sql.Timestamp
+ java.sql.Types
+ java.text.CharacterIterator
+ java.text.ChoiceFormat
+ java.text.CollatedString
+ java.text.Collation
+ java.text.CollationElementIterator
+ java.text.DateFormat
+ java.text.DateFormatData
+ java.text.DecimalFormat
+ java.text.Format
+ java.text.FormatException
+ java.text.FormatStatus
+ java.text.MessageFormat
+ java.text.NumberFormat
+ java.text.NumberFormatData
+ java.text.ParseStatus
+ java.text.SimpleDateFormat
+ java.text.SortKey
+ java.text.StringCharacterIterator
+ java.text.TableCollation
+ java.text.TextBoundary
java.util.BitSet
+ java.util.Calendar
java.util.Date
java.util.Dictionary
java.util.EmptyStackException
java.util.Enumeration
+ java.util.EventListener
+ java.util.EventObject
+ java.util.GregorianCalendar
java.util.Hashtable
+ java.util.ListResourceBundle
+ java.util.Locale
+ java.util.MissingResourceException
java.util.NoSuchElementException
java.util.Observable
java.util.Observer
java.util.Properties
+ java.util.PropertyResourceBundle
java.util.Random
+ java.util.ResourceBundle
+ java.util.SimpleTimeZone
java.util.Stack
java.util.StringTokenizer
+ java.util.TimeZone
+ java.util.TooManyListenersException
java.util.Vector
+ java.util.zip.Adler32
+ java.util.zip.CRC32
+ java.util.zip.CheckedInputStream
+ java.util.zip.CheckedOutputStream
+ java.util.zip.Checksum
+ java.util.zip.DataFormatException
+ java.util.zip.Deflater
+ java.util.zip.DeflaterOutputStream
+ java.util.zip.GZIPInputStream
+ java.util.zip.GZIPOutputStream
+ java.util.zip.Inflater
+ java.util.zip.InflaterInputStream
+ java.util.zip.ZipEntry
+ java.util.zip.ZipException
+ java.util.zip.ZipFile
+ java.util.zip.ZipInputStream
+ java.util.zip.ZipOutputStream
sun.* and sunw.*
The following classes are not counted in the above summary class
count:
sun.tools.debug.DebuggerCallback
+ sun.tools.debug.NoSessionException
+ sun.tools.debug.NoSuchLineNumberException
sun.tools.debug.RemoteArray
sun.tools.debug.RemoteBoolean
sun.tools.debug.RemoteByte
sun.tools.debug.RemoteChar
sun.tools.debug.RemoteClass
sun.tools.debug.RemoteDebugger
sun.tools.debug.RemoteDouble
sun.tools.debug.RemoteField
sun.tools.debug.RemoteFloat
sun.tools.debug.RemoteInt
sun.tools.debug.RemoteLong
sun.tools.debug.RemoteObject
sun.tools.debug.RemoteShort
sun.tools.debug.RemoteStackFrame
sun.tools.debug.RemoteStackVariable
sun.tools.debug.RemoteString
sun.tools.debug.RemoteThread
sun.tools.debug.RemoteThreadGroup
sun.tools.debug.RemoteValue
sun.tools.debug.StackFrame
+ sunw.io.Serializable
+ sunw.util.EventListener
+ sunw.util.EventObject