     12 

     API  Java 

      Visual J++    Java  1.0.2. 
         Java   , 
   , , ,   
  Visual J++.    Visual J++    
        ,   
     "",   Visual J++ 
      Java. 
       API,    Java    
         Java  
    " ". ,    
    ,   Java 
1..,__           
Visual J++,        ,     
 AppletWizard,     :     
 Java 1.1. 
        API      
   JavaSoft,    Java    
.   WWW-: http//splash.javasoft.com. 

    367 


    API      

    Java        Internet. 
 ,         
 ,       ,  
  .        
      API. 
    API,   ,    Java  1.1.  
API     Java    .  
,       Internet   
   ~ .      
JAR-, i -     ~". 
         ,  ,  
        
. API    (Remote Method Invocation  
RMI)  jpjBeTOM Java   DCOM,   Windows. 
"   ,      
     .    
,         Internet  
   .  RMI     
    ,   . 
     DCOM   RMI,   ActiveX    API Java 
Beans.     , Java Beans   
  Java. Java Beans    ,    
 .      ,  Bean-  
  , - .  Java 
  Windows,   Java-    ActiveX  
 -,   .  ,  
     Visual Basic     Microsoft 
Office 97. "   Java-     
 ActiveX.  Java-    ActiveX, 
    ,     
.   Java Beans API   ,  
    .  , Bean-  
  Activ eX. 
    ,     ActiveX, Bean-    
 CORBA,  Og?nDoc  Macintosh     
LiyeQQMSct  Netscape.     Bean-     
          . 
      Java 1.1  Java Database Connectivity (JDBC) 
       

    368 Visual J++:   

        (). JDBC- , 
 ,       ( 
   ODBC  Windows).      
 ,      
 .     Java,   
          public-. 
  API,         , 
    .	~- """" 
     Java 1.1   ,   (servlei).  
 ,   _ WWW-. ^   
CGI-^,    ISA^FfupoSyK-fa InterneFTnlor-niation 
Server (US)  Microsoft     NSAPI  Netscape 
Navigator.    " "  Web-  
 WWW-    "^?~1'- 
WWW-.   API  , -  
    CGI,   ,    Perl 
 ,    ~ Jlva-    
/.   API      ,  
    Java. 

     API 

     Java 1.1   ,      
   .  API    Graphics 
 ,   "bitblting" (bit block transferring   
 ), -    ..  
   (2D) ,   (3D) ,  
     ,     
  . 

      

        _-, , ,  
 IPersist.  ~"     
"5,      . 
,     ActiveX       
-.        
 ,   . 
               Java 
1.0.  ,      Visual J++,   
  Java 1.1   ,   
 .       
   I Persist.  Java 1.1   
     

     12.  API  Java 369 

        (  . ).    
     . 
    !'."' i 

      Visual J++ 

    ,    Visual J++    
 .       , 
     Java 1.1.     
   Java  1.0  1.0.2.   Visual J++  
 Java  1.1,     
,    . 

         

         ,   ""   
     ,      
.        (   
 ,   Filterlnput-Stream  FilterOutputStream). 
         , 
         .  , 
       ,     
   .       
   .      
,   ,  ,  ObjectOutput.  
,         ,  
    ,       
   ,        
.             
  . 12.1. 
      ,         ,   
 ,            
       .  ""   
  Serializable.   Serializable   
,            
.  serializeTo()    ,   
     .   
serializeToQ          
.  serializeFromQ  Serializable    
     .   SerializaBle  
 : 

    public jjiterface Serializable ( 
    //  serialiseTo()       //  
   ObjectOutput.   '  //  serializeFrom() 
   ' - //        Objectlnput. 


    37	Visual J++:   


    } 
    public  void  serializeTo (ObjectOutput  oo)   throws   lOException; 
    //    serializeFrom()       
    //      ,      
    //  ObjectOutput            
    //   serializeTo(). 
    public  void  serializeFrom(Objectlnput  oi)   throws   lOException; 


         
    MyObject 
    int nData=7; 
    long IData=OxAF07 
         
    .    "MyObject" 
    MyObject 
    int nData=7; 
    long IData=OxAF07 
    "MyObject" 0x0000007, OxOOOOOOOOOOOOFO? 
      
      
    2.      

    . 12.1.        

     ,          
       ,   Serializable. 
      ObjectOutput   ,    
  .     , 
        Java (, 
  ).      ,   
 DataOutput  java.io.    DataOut-put 
 ObjectOutput  ,    wrifeSeri-alizableQ, 
        .  
   ObjectOutput: 

    import Java.io.DataOutput; 
    public interface ObjectOutput extendjs DataOutput ( 
    //    DataOutput (writeBoolean (), // writelntO  
)  ObjectOutput  


     12.  API  Java 371 


    //       Serializable. 
    public void writeSerializable(Serializable ser)   throws  lOException; } 

          ,   
   writeSerializable(),    DataOutput,   
 ,    ObjectOutput.  ,   java.io 
  DataOutputStream,   DataOutput.  
  ObjectOutputStream,    DataOutputStream,  
     writeSerializable().  
 ObjectOutputStream  : 

    import java.io.*; 
    class ObjectOutputStream extends DataOutputStream implements ObjectOutput { 
    public ObjectOutputStream(OutputStream out) { super( (out instanceof 
DataOutput) ? out : 
    new DataOutputStream(out)); } 
    public void writeSerializable(Serializable ser)throws lOException { 
    DataOutput outLocal = (DataOutput)out; -'"' '' if (null == ser) ( 
    outLocal.writeUTF("<null>"); return; > 
    Class els = ((Object)ser) .getClass (); outLocal.writeUTF(cls.getName()); ser.serializeTo(this); 
    } 

     writeSerializable()       ,  
  ,   ,     
  Serializable.    .   
          , 
   ,     .    
 ,   Serializable     , 
   ,       seriali-zeFromQ. 
     Objectlnput   ObjectOutput.    
 Datalnput       , 
   .      Objectlnput: 

    372	Visual J++:   


    import Java.io.DataOutput; 
    public interface Objectlnput extends Datalnput { 
    //    Datalnput  Objectlnput 
    //     Serializable. 
    public Serializable readSerializable() throws lOException; 
    } 

         ,     
ObjectOutputStream.  ObjectlnputStream    
Datalnput-Stream.       (readBooleanQ, 
read-Int()  ),        
   InputStream.  readSerializable() 
  : 
              . 
           "null",    null. 
           ,    . 
  serializeFromQ       
.     ObjectlnputStream: 

    import   java.io.*; 
    class  ObjectlnputStream extends  DatalnputStream implements  Objectlnput  
 { public  ObjectlnputStream(InputStream  in)    ( super((in   instanceof   
Datalnput)    ?   in   : 
    new  DatalnputStream(in)); } 
    public  Serializable  readSerializable()   throws   lOException   { 
Datalnput   localln  =   (Datalnput)in; 
    String   strClassname  =  localln.readUTF(); 
if("<null>".equals(strClassname)) return  null; 
    Object o; try { 
    Class els = Class.forName(strClassname); 
     = els.newlnstance (); } catch (ClassNotFoundException cnfe) { 
    return null; } catch (InstantiationException ie) ( 
    return null; } catch (IllegalAccessException iae) { 
    return null; ) if(!(o instanceof Serializable)) 
    throws new ClassCastException("Serialized class not Serializable"); 


     12.  API  Java	373 


    ( (Serializable)) .serializeFrom(this); return (Serializable)o; 
    \ 
    ) 

             
    Visual J++.     
 /,       
SerializablePoint  .        
       .    
 /   : SerializablePoint, Server  
ClientApplet.     .  . 12.2 , 
           . 

    ; Q    Client Applet - Microsoft Internet Explorer 

    . 12.2.   SerializablePoint, ClientApplet u Server 


    import	java.net.*; 
    import	java.io.*; 
    import	java.awt.*; 
    import	Java.applet.Applet; 
    import	Serializable; 
    import	Java.ObjectlnputStream; 
    import	ObjectOutputStream; 
    import	java.util.*; 


    374 Visual J++:   


    class SerializablePoint implements Serializable { //   
  X  Y. public int m_x; public int m_y; 
    public SerializablePoint() { this(0, 0); 
    ) 
    public SerializablePoint (int x, int y) { m x = x; m_y = y; 
    ) 
    11111II11111111111111111 
    II   Serializable. 
    public void serializeTo(ObjectOutput out) throws lOException { 
    out.writeInt(m_x); 
    out.writelnt(m_y); } 
    public void serializeFrom(Objectlnput in) throws lOException { 
    m_x = in.readlnt(); 
    m_y = in.readlnt(); } 
    / 
    //           // 
,     SerializablePoint   // .  
    //     initO  
Applet, public class ClientApplet extends Applet { 
    //        // .  
  ObjectOutputStream, //    
SocketOutputStream. private ObjectOutputStream m_out; private TextField 
m_textX; private TextField m_textY; 
    //  init()      //   
  , public void init() { 
    //    ,  
    //   ObjectOutputStream. 
    try { 
    Socket sock = new Socket(InetAddress.getByName( 
getDocumentBase().getHost()), 1001); // 1001   . 
    OutputStream out = sock.getOutputStream(); 
    m_out = new ObjectOutputStream(out); } catch (lOException ioe) { 


     12.  API  Java	375 


    System.err.println("Unable to lookup or connect to 
    server:" + ioe); return; ( 
    //    . 
    setLayout(new FlowLayout() ) ; 
    add(new Label("X: ") ) ; 
    add(m_textX = new TextField(5) ) ; //5  
    add(new Label("Y: ") ) ; 
    add(m_textY = new TextField(5)); //5  
    add(new Button("Send to Server")); } 
    //    "Send to Server"     // X  Y 
   SerializablePoint.   //  . 
    public boolean action(Event evt, Object what) { iff!(what instanceof String)) 
    return false; 
    if(!"Send to Server".equals((String)what)) return false; 
    try { 
    int x = Integer.parselnt(m_textX.getText()); int  = 
Integer.parselnt(m_textY.getText()); SerializablePoint ser = new 
SerializablePoint(x, y) ; m_out.writeSerializable(ser); } catch 
(NumberFormatException nfe) { 
    System.err.println("Must have numbers in X and Y 
    edit boxes."); } catch (lOException ioe) { 
    System.err.println("Error writing point to the 
    server: " + ioe); } finally { 
    return true; } } } 
    // -       // 
  SerializablePoint,   .  //   
 .    //   
 .   . //      
,   //   , public 
class Server extends Frame implements Runnable { 
    //        ServerSocket //  
 .  ,   //  ,  
  , private ServerSocket m_socketServer; 


    376 Visual J++:   


    private Vector m_vectPoints; Thread m_thread; 
    //  main()       
    //     . 
    public static void main(String[] astraArgs) ( 
    Server s = new Server(); 
    s .resize (5(^;~~7 
    s.show();	/ 
    / 
    //        // Vector  
   , public Server () { 
    super("Olrject Stream Server"); 
    m_vectPoints = new Vector(); 
    try { 
    m_socketServer = new ServerSocket(1001); } catch (lOException ioe) { 
    System.err.println("Error setting up server socket.") 
    return; } 
    //  ,    . m_t'hread = new Thread 
(this) ; m_thread.start() ; } 
    //  paint()     //    
m_vectPoint. public void paint(Graphics g) { 
    Enumeration enum = m_vectPoints.elements(); while(enum.hasMoreElements()) { 
    Point p = (Point)enum.nextElement(); g.drawRect(p.x-1, p.y-1, 3, 3) ; } } 
    //     run().    //  
  ,     // SerializablePoint   
   ,   //     , 
public void run() { 
    while(m_thread == Thread.currentThread()) { ObjectlnputStream ois; try { 
    Socket sock = m_socketServer.accept(); ois = new 
ObjectlnputStream(sock.getlnputStream()) } catch (lOException ioe) { 
    System.err.println("Error waiting for new connection:" + ioe); 


     12.  API  Java	377 


    return; 
    } 
    try   { 
    while (true)    { 
    SerializablePoint  p  = 
    (SerializablePoint)ois.read SerializableO; ra_vectPoints.addElement(new  
Point(p.m_x,   p.m_y)); repaint () ; ) }   catch   (EOFException   eof)    { 
    //        . }   catch   (lOException  ioe)  
  { 
    System.err.println("Problem reading new Point:   "   +  ioe) ; break; } } } 


       Java 1.1 

       ,    Java   
    . ,     
,   Serializable.     
    . 
          .  
,   ,      
    . ,   
CreditCardTransaction   -,   
InputStream        
CreditCardTransaction. ,      
serial-izeToQ  serializeFromO  ,     
,        . 
             
 - .       
        .   
 ,       .     
    . , -    
MyDataClass,      ,   50 
       .   , 
       ,     
 .    ,   50   
MyDataClass,   ,        
 ,   . 
         .  
Serializable     ,   

    378	Visual J++:   

        . _!111^_ 
      .    
Vector, Hashtable        
Serializable,       .  
      . 
            
 API    Java 1,1,     
.   API     Java  1.1, 
       ,  
    Java 1.1.     Visual 
J++,     Java      
WWW- JavaSoft (     ). 
     API        
Java 1.0.2,          
      .     
    , ,      
   ,   ObjectlnputStream  
ObjectOutputStream.      readObject()  wtiteObjectQ, 
        . 
        WWW- 
 JavaSoft. 

       

         ,    
  Java-    -     
.            
    .  ,   
     ,  ""   .    
    (   ),     
  . 
    , ,     ,   
    ,  ,     ,  
-  Internet.  ,   Internet,    
 . ,  ,    
. ,    ,  ,     
  -  , ,   - .    
        ,  
 .  . 12.3  ,   Internet. 

     12.  API  Java	379 


      
    , 
      
     
      
    ,        
      
    ,    '-;.->     
    i          .*-.-. I        |.:> 
       	]f":s              <''%? - . ; :(^'.*%,1:,;.:.:::::. 
    ,     *     

    . 12.3. ,   Internet 

       ,   
  ,  ,   Internet 
   Java 1.1     (Remote 
Method Invocation  RMI).       Internet 
 ,           
.   RMI       
    ,    .  
   . 12.4. 

       
    	I                                  I  
|-<>> |  
    ^:.- i' 
    .-'JL 
     	  

    . 12.4. RMJ'-,      


    380 Visual J++:   


     RMI- 

    RMI     Java 1.1.  Visual J++  
 Java 1.0.X,   RMI   . - 
RMI-    WWW-  JavaSoft.   
   Java 1.0.2    . 

       

     . 12.4       Java,  
  Internet jjBOHjraK  - (proxy stub). 
   ,      ( 
),    .       
 _!  ^      
RMI-.       ,  
    .     
 .  . 12,5 ,     
 . 

      


           :j   P'i"*i . "<    - .-'-~ '''--' '; '' 
^	2.  	-> 
    ^- i  |,.i'*l	   
        
    	?.. 
      
      
      
    **: 
     |  
     -  !   { 
    ^--^8  -  
     ___ 
      
          
    *\ ! 
      

    . 12.5.       


     12. flpyrne API  Java 381 

     ,    " ",  
,    ,      
.      ,    ,   
 ,     ,   
 .  ,      
     ,    ,   
      . 
        .  Java    
 ,     Internet   
  .     ,  , 
 Counter ("")     incrementQ  getCount().  
   ,    ,   
     . ,    
,    , ..    
 increment()  10 . 
          Game ("").   
Game    ,    ()  Internet 
      .      
movePieceQ  Game,    Game   ,  
  . 
    ,      , 
          
,    Move  .   
,   RMI API  Java 1.1   ! 
     Game  ,   
  ,   .    
-      . 
       . 12.5,  RMI     
.     -,     
,   (skeleton).    
 .-'       
      RMI- ,  
  .        
,      . 
    ,          
,    .    
   ,    . ,  
 ,     ,   . 
           
 (marshaling).     
.  , RMI- Java .jja API  
.	-, .-

    382 Visual J++:   


      

      ,     ,  :  
       . 
,    GameServer,     
 game.mycompany.com -  Internet.    
-  ,     ? 
         RMI- (Registry)  
. RMI-       
 .         
  Game      .   
       ,   
       -  
" .  .     
   ,    ,   
 .  . 12.6 ,       
     . 

    1      * 
     
        "my object" 
     < 
    1.  
    - 
    ^'f      
     
    2.     -    
    .       "my object" 

    . 12.6.   RMI- 


      

    ,        
""         -,  
 ,         
Java:  .  ,     
public-,  ,  -   . , 
   Counter    : 

    class Counter { 
    public void increment() { } 


     12.  API  Java 383 


    public int getCount() ( 
    '') } 

       Counter ,   , 
  ,     .  
   Counter: 

    public interface Counter extends Remote ( 
    public void increment() throws RemoteException; 
    public int getCount() throws RemoteException; } 

     Counterlmpl,   Counter,   
:	' \ 

    public class Counterlmpl implements Counter private int m_nCount; 
    public Counterlmpl(} { 
    m_nCount = 0; } 
    public synchronized void increment() ( 
    m_nCount++; } 
    public synchronized int getCountO { 
    return m_nCount; } } 

         ,  RMI,   
  . 
     -  -   
Counterlmpl  ,   Counter.    
,   ,     Counter.   
  increment()  getCountQ. (,    
-    CounterImpl_Stub,    
 CounterImpl_Skeleton.) 
           . 
-,  Counter    Remote,    
       RMI.     
  ,  RMI-  ,    
   -.  ,    
:   ,   ,    
  ,   .  RMI- ,    
        
,   

    384	Visual J++:   

    Remote    .   Remote 
   (    ): 

    public interface Remote)} 

    -,    Counter    
 !JlemoteException.  ,       
 -   ,    
-.   RemoteEx-ception    
- ,  ,    
_-- -~,     
   .       
  . 
    -,     Counter   Coun-terlmpl 
 ,     RemoteException.   
,         .   
   ,  ,      
      .   
   . 

      RMI 

          RMI,   Java 1.1. 
 RMI  DCOM   . DCOM       
,   RMI  Jay<L -  DCOM    , 
         
    .  RMI     
  ,       
. ,       
TCP/IP.   RMI  DCOM   ,  RMI,   Java  
,    , a DCOM     
Windows.        ,     
   . 
             , 
   RMI      .  ,  
,     (,   RMI- 
      ),       
WWW-  JavaSoft.         
 RMI    Java 1.1. 

     12.  API  Java	385 


     Java Beans 

    Java Beans       Java.  
Java Beans     -  Java  
   (, ActiveX  COM, OpenDoc  CORBA). 
    Java Beans API   Java 1.1,    
Visual J++    .   Java Beans   
WWW-  JavaSoft.        
Java Beans,        ,    
 Visual J++. 
      Java Beans        
 ActiveX, OpenDoc  - .  Java Beans 
   .       ,  
Bean-     ,    
  Web-.       
        . Bean- 
 ,    ( JAR-,  
  6).          
,  OLE-  ,     . 
       Java Beans     Java 
1.1.  ,      
Bean-     Internet ,  ,  
Bean-    -.    
   RMI.     ,   
      (, Reflection API,  
      ,    ). 
    Bean-    ,   , 
     -,  
  ,       Bean-. 
     .      
90-  ,   WWW-  JavaSoft. 

      API 

     Java 1.1    API,        
.       , 
  Java 1.1.   API,     ,  
        Java.    
  WWW-  JavaSoft.    API 
 . 

    386	Visual J++:   


      

         6,  AppletWizard   
       
.          
 ,     ,  
    . 
       API  ,    
    .   
  ,  _   ,  
  .        
     ,     
   . 
        Visual J++     _API 
2-  Java 1.1,     .  - 
Visual J++     Liquid Reality (" 
")  DimensionX.     
Liquid Reality,          
.  Liquid Reality  -   
  Explore the CD   Visual J++.   COOL 
TOOLS     DIMENSIONX,        
Default.html    . 

      

      Java 1.0.X        
.      ,    
Java,     .     
Windows 95,   Windows NT,   X-Window. 
    API -,   Java 1.1,   
    .     
 VRML- ,     . 

        

         -  Java 
       
 Internet,    .  , 
 Java    -   (  
     ),       
    .     
 Internet  -,  .      Java? 

     12.  API  Java	387 

        Java (Java Media Framework) 
   ,    
   -  ,   
Internet-  .       
     .   
      . 

     

      Java 1.1     ,    
    .      Java 1.0  
   ,      Java 1.0  
  Internet. Java 1.1    
  . 
           
 Internet . .  API ^   
"'          
 ,       . 
 ,      Java Beans API. Java 
Beans    -, , 
 , . Bean-      
,     .  ,  
     ActiveX-,   
Visual Basic  Office 97. 
          (RMI)  Internet  
 -.      
           
       
.    ,  , 
   ,   ,  
      -.  
RMI, , ,    Game,    
      Internet. ; ; 
             RMI. 
      API,   Java 1.1,   
    (JDBC),    , 
  ,   .   ,  
,     API , API    
  .  ,    . 
API  Java 1.1,  WWW- 

     JavaSoft: http:/wsplasruavasoft.com. 
    V...UX 


    388	Visual J++:   

