From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Wed Feb 04 02:38:52 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 24374 invoked from network); 3 Feb 1998 18:38:51 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 4 Feb 1998 02:38:51 -0000 Received: (qmail 16023 invoked by uid 1052); 3 Feb 1998 18:38:49 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 15997 invoked from network); 3 Feb 1998 18:38:48 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 4 Feb 1998 02:38:48 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id SAA25426 for CSCI397C-08-L; Tue, 3 Feb 1998 18:38:46 -0800 (PST) Received: from palrel1.hp.com (palrel1.hp.com [156.153.255.242]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id SAA25421 for ; Tue, 3 Feb 1998 18:38:43 -0800 (PST) Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel1.hp.com (8.8.6/8.8.5tis) with SMTP id SAA03943 for ; Tue, 3 Feb 1998 18:38:41 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA04348; Tue, 3 Feb 1998 19:38:54 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD30DB.50E1FA80@hpb18347.boi.hp.com>; Tue, 3 Feb 1998 19:38:34 -0700 Message-Id: <01BD30DB.50E1FA80@hpb18347.boi.hp.com> From: Jerry Loyd To: "Anne Keuneke (E-mail 2)" Subject: Separate GUI and App discussion Date: Tue, 3 Feb 1998 19:41:58 -0700 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 2127 I'm having a little bit of trouble with this concept of = GUI<>Interface<>App. I thought I understood it totally, until I started = getting to the details on the homework assignment. Let me throw out a = few thoughts here, and I'd like to hear the opinions of others in the = class. The reason I thought I already "got it" was because we are all exposed, = on a daily basis, to programs that offer a variety of different "views" = on the same data. Word processors let you view a document in outline = view, draft view, or final view, and so forth. Spreadsheets let you see = the data in tabular form or as a nice graph, or both at once. It is = obvious that the best way to implement this is to keep these "views" = separate from the underlying "app". What I can't get away from is the idea that one of these two things must = exist inside these wonderful programs: =20 1) The view knows a lot about the underlying app so that it can respond = to some kind of "update" message and "pull" the data of interest, or=20 2) the "app" is aware of a list of views that it can "push" data to via = some well-defined specification (notice the avoidance of the use of the = word "interface") whenever the data is changed. Even when a well-defined "inteface" exists between a client and a = server, so that customers can do things like change the server from = Oracle to Sybase, or use both PC and UNIX clients, the "interface" is = just a paper specification, not some physically implemented "object". I can see the benfit of the 3-tier method, but only for little tiny = components, not complete GUI's. For example, putting a button on a = form, and then adding a listener which converts the "button pushed" = message to a "go" message for the app, makes a lot of sense, rather than = having to subclass the button and override or extend a button method. = But, the "listener" will still be in the GUI's code file, and so it's = still going to look like I've only got a 2-tier system. If anybody has gotten beyond this narrow view of the world, and cares to = share it, it would be greatly appreciated. Jerry Loyd From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Wed Feb 04 04:04:49 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 4979 invoked from network); 3 Feb 1998 20:04:45 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 4 Feb 1998 04:04:45 -0000 Received: (qmail 26530 invoked by uid 1052); 3 Feb 1998 20:04:44 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 26496 invoked from network); 3 Feb 1998 20:04:42 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 4 Feb 1998 04:04:42 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id UAA25462 for CSCI397C-08-L; Tue, 3 Feb 1998 20:04:40 -0800 (PST) Received: from pitbull.ecst.csuchico.edu (pitbull.ecst.csuchico.edu [132.241.3.10]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with SMTP id UAA25457 for ; Tue, 3 Feb 1998 20:04:37 -0800 (PST) Received: (qmail 26482 invoked from network); 3 Feb 1998 20:04:35 -0800 Received: from pmdyn115.dip.csuchico.edu (HELO ecst.csuchico.edu) (132.241.248.115) by pitbull.ecst.csuchico.edu with SMTP; 4 Feb 1998 04:04:35 -0000 Message-ID: <34D7EA4E.85B85C26@ecst.csuchico.edu> Date: Tue, 03 Feb 1998 20:10:54 -0800 From: Wing Keong Loo X-Mailer: Mozilla 4.04 [en] (Win95; I) MIME-Version: 1.0 To: Jerry Loyd CC: "Anne Keuneke (E-mail 2)" Subject: Re: Separate GUI and App discussion References: <01BD30DB.50E1FA80@hpb18347.boi.hp.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 2854 You are quite right about the 2 things. They form the part of the basis of the Model-View-Controller pattern of doing apps. You can actually separate the definition of the listeners from the GUI code but that can add a little code overhead. According to the Swing tutorial and docs that explain the MVC, Java has a slightly modified way of implementing MVC in that it will appear to be a "2 tiered"(?) system due to the fact that the delegation or controllers can exist in the same code as the GUI thanks to the anonymous inner class which is a convenience for the programmer. Controllers are implemented as action listeners in Java and is the part of MVC that deals with what happens when the user interacts with the GUI. Wing. Jerry Loyd wrote: > > I'm having a little bit of trouble with this concept of GUI<>Interface<>App. I thought I understood it totally, until I started getting to the details on the homework assignment. Let me throw out a few thoughts here, and I'd like to hear the opinions of others in the class. > > The reason I thought I already "got it" was because we are all exposed, on a daily basis, to programs that offer a variety of different "views" on the same data. Word processors let you view a document in outline view, draft view, or final view, and so forth. Spreadsheets let you see the data in tabular form or as a nice graph, or both at once. It is obvious that the best way to implement this is to keep these "views" separate from the underlying "app". > > What I can't get away from is the idea that one of these two things must exist inside these wonderful programs: > > 1) The view knows a lot about the underlying app so that it can respond to some kind of "update" message and "pull" the data of interest, or > > 2) the "app" is aware of a list of views that it can "push" data to via some well-defined specification (notice the avoidance of the use of the word "interface") whenever the data is changed. > > Even when a well-defined "inteface" exists between a client and a server, so that customers can do things like change the server from Oracle to Sybase, or use both PC and UNIX clients, the "interface" is just a paper specification, not some physically implemented "object". > > I can see the benfit of the 3-tier method, but only for little tiny components, not complete GUI's. For example, putting a button on a form, and then adding a listener which converts the "button pushed" message to a "go" message for the app, makes a lot of sense, rather than having to subclass the button and override or extend a button method. But, the "listener" will still be in the GUI's code file, and so it's still going to look like I've only got a 2-tier system. > > If anybody has gotten beyond this narrow view of the world, and cares to share it, it would be greatly appreciated. > > Jerry Loyd From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Wed Feb 04 15:55:20 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 8370 invoked from network); 4 Feb 1998 07:55:19 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 4 Feb 1998 15:55:19 -0000 Received: (qmail 19919 invoked by uid 1052); 4 Feb 1998 07:55:18 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 19892 invoked from network); 4 Feb 1998 07:55:16 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 4 Feb 1998 15:55:16 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id HAA25894 for CSCI397C-08-L; Wed, 4 Feb 1998 07:55:14 -0800 (PST) Received: from shell.wco.com (shell.wco.com [199.4.94.16]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id HAA25889 for ; Wed, 4 Feb 1998 07:55:09 -0800 (PST) Received: from wco.com (venus53.wco.com [199.4.94.153]) by shell.wco.com (8.8.5/8.8.5/WCO-18jul97) with ESMTP id HAA08066; Wed, 4 Feb 1998 07:54:24 -0800 (PST) Message-ID: <34D88E68.A94C2F1C@wco.com> Date: Wed, 04 Feb 1998 07:51:04 -0800 From: Wayne Cannon Reply-To: wcannon@wco.com X-Mailer: Mozilla 4.02 [en] (WinNT; I) MIME-Version: 1.0 To: csci397c-08@wombat.ecst.csuchico.edu, nhnguye@pacbell.com, wang@hpprsd1.sc.hp.com, jeantt@sr.hp.com, george.greene@tandem.com, greenejv@us.ibm.com, ron.su@tandem.com, Marcia_Paulson@hp.com, RicketsC@AV8BMX.chinalake.navy.mil, pam.ross@sunmail.chinalake.navy.mil, brianm@hprrc725.rose.hp.com, trungn@hp-vcd.vcd.hp.com, jimd@center.uscs.com, holly.hayes@bently.com, jloyd@hpbs972.boi.hp.com, tina@ndti.net, craigm@llnl.gov, wayne_cannon@hp.com, dcarter@us.ibm.com, veasna@cv.hp.com, david_paulson@hp.com Subject: GUI-Application Relationship Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 3026 I suggest that the application, in general, should have NO knowledge of the GUI. That means NO reference to the GUI passed as a parameter and that the application should NOT instantiate the GUI. Here is my rationale. [I am more familiar with the Model-View-Controller (or more simply, Model-View) paradigm--MVC--so forgive me if I accidentally lapse in my terminology.] Knowledge: 1. The GUI/View has knowledge of the Application/Model. 2. The Application/Model has NO knowledge of the GUI/View. Aside from clean designs and academic purity (neither are bad reasons by themselves), there are some very good reasons for separating the Application from the GUI. One very common advantage is the ability to have more than one GUI/View for any given Application/Model instance. Here are some common examples: 1. A Web page with source views and "browser" views. 2. A word processor document with multiple views into different segments of the document and possibly an additional "print preview" view. 3. A resistor [electronics] with a schematic GUI/View (zig-zag line), a layout GUI/View (a rectangle and lines representing the body and leads respectively), a simulation GUI/View (electrical behavior, e.g., a plot current versus voltage), a textual GUI/View ("R=50 ohms 1/4 watt"), and a material-list GUI/View ("Part #1234-5678"). The Application/Model is simply an object with two or three simple instance variables. Often, new GUIs/Views are imagined and implemented long (years) after the Application/Model. If the Application/Model has no knowledge of the GUI/View, then many GUIs/Views (of many different types) can "view" the model at any time, and they can come and go with no concern or impact on the model. In general, I have adopted the following: 1. The GUI/View has knowledge of the Application/Model. 2. The Application/Model has NO knowledge of the GUI/View. This makes it completely abstract of various views. Smalltalk (and Java) have a very nice mechanism to deal with updating the GUI/View when there is a change in the Application/Model--the "dependency" mechanism. In Smalltalk, the Object class implements the dependency mechanism. It allows any (GUI/View) class to "register" an autonomous dependency on any other (Application/Model) class. The Application/Model maintains a list of dependents, but has no knowledge about them, other than that they want to be notified of changes. Whenever there is a change, it sends itself a "changed" message which the base class (Object) then broadcasts as a "notify" message to all dependent classes. The default "notify" messages can be simple, putting the responsibility on the GUIs/Views to query the Application/Model for any needed information on changes. However, more complex notify messages can be created that include information on the nature of the changes within the notify message. Any thoughts or challenges? Wayne Cannon From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Wed Feb 04 16:50:23 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 18413 invoked from network); 4 Feb 1998 08:50:21 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 4 Feb 1998 16:50:21 -0000 Received: (qmail 29502 invoked by uid 1052); 4 Feb 1998 08:50:20 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 29474 invoked from network); 4 Feb 1998 08:50:19 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 4 Feb 1998 16:50:19 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id IAA25936 for CSCI397C-08-L; Wed, 4 Feb 1998 08:50:17 -0800 (PST) Received: from palrel1.hp.com (palrel1.hp.com [156.153.255.242]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id IAA25930 for ; Wed, 4 Feb 1998 08:50:13 -0800 (PST) Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel1.hp.com (8.8.6/8.8.5tis) with SMTP id IAA07452 for ; Wed, 4 Feb 1998 08:50:12 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA07664; Wed, 4 Feb 1998 09:50:33 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD3152.48436EA0@hpb18347.boi.hp.com>; Wed, 4 Feb 1998 09:50:10 -0700 Message-Id: <01BD3152.48436EA0@hpb18347.boi.hp.com> From: Jerry Loyd To: "'wcannon@wco.com'" , "Anne Keuneke (E-mail 2)" Subject: RE: GUI-Application Relationship Date: Wed, 4 Feb 1998 09:53:31 -0700 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 1753 [Jerry Loyd] Wayne Cannon wrote... In general, I have adopted the following: 1. The GUI/View has knowledge of the Application/Model. 2. The Application/Model has NO knowledge of the GUI/View. This makes it completely abstract of various views. [Jerry Loyd] I can certainly go with this idea, especially for the = probably-common case where the GUI was conceived years after the = application. This is in line with what I was thinking. The concept of = both the GUI and the App being developed completely separately, with no = knowledge or even intention of ever being used together, and then trying = to glue them together is kind of "out there." It would seem that cases = where this made sense would be more a matter of luck than something one = should strive for. This even covers the case of buying complex OCX or ActiveX or other = "components". These components would not know anything about the App, = but they would be owned by the GUI which would, and the GUI code would = extract data and state from the model and blow it into the fancy display = components. Smalltalk (and Java) have a very nice mechanism to deal with updating = the GUI/View when there is a change in the Application/Model--the = "dependency" mechanism. =20 [Jerry Loyd] I did some SmallTalk programming in Dr. Keuneke's class a = couple of years ago. It was awsome. It's been disappointing to see = other langauges, even JAVA, use some of the same terminology, and when I = look into the details, I feel like I've been lied to. I'm a big fan of = the Hermann Hess book, "The Glass Bead Game," (a.k.a. "Magister Ludi") = When I was programming in SmallTalk, I was absolutely certain I had = discovered the mental "game" Hess was trying to describe. From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Thu Feb 05 02:16:16 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 4951 invoked from network); 4 Feb 1998 18:16:08 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 5 Feb 1998 02:16:08 -0000 Received: (qmail 12623 invoked by uid 1052); 4 Feb 1998 18:16:07 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 12602 invoked from network); 4 Feb 1998 18:16:06 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 5 Feb 1998 02:16:06 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id SAA26622 for CSCI397C-08-L; Wed, 4 Feb 1998 18:16:04 -0800 (PST) Received: from garlic.com (quake.garlic.com [208.195.160.136]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id SAA26617 for ; Wed, 4 Feb 1998 18:15:30 -0800 (PST) Received: from garlic.com (m.l1.vfr.net [207.212.212.13]) by garlic.com (8.8.6.Beta3/4.03) with ESMTP id SAA42938; Wed, 4 Feb 1998 18:13:51 -0800 Message-ID: <34D9205D.F4A2505A@garlic.com> Date: Wed, 04 Feb 1998 18:13:49 -0800 From: Marcia Paulson X-Mailer: Mozilla 4.02 [en] (WinNT; I) MIME-Version: 1.0 To: csci397c-08@wombat.ecst.csuchico.edu, nhnguye@pacbell.com, wang@hpprsd1.sc.hp.com, jeantt@sr.hp.com, george.greene@tandem.com, greenejv@us.ibm.com, ron.su@tandem.com, Marcia_Paulson@hp.com, RicketsC@AV8BMX.chinalake.navy.mil, pam.ross@sunmail.chinalake.navy.mil, brianm@hprrc725.rose.hp.com, trungn@hp-vcd.vcd.hp.com, jimd@center.uscs.com, holly.hayes@bently.com, jloyd@hpbs972.boi.hp.com, tina@ndti.net, craigm@llnl.gov, wayne_cannon@hp.com, dcarter@us.ibm.com, veasna@cv.hp.com, david_paulson@hp.com, spuds@mackenzie.gardnerville.nv.us, anne.mackenzie@bently.com Subject: HP-UX JVM Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 1138 I am curious. One of Dr. Keuneke's web pages mentioned that there have been some problems with the HP-UX implementation of the JVM on the machines at Chico. Have any of you experienced these problems and what did they look like? I have a problem with a java application running on one HP-UX 10.20 machine with a 1.1.3 JVM. The display is exported to a 9.X HP-UX machine running a VUE display. Rarely, I get core dumps either in the screenUpdater class or the ProcessReaper class. When I get a core dumps I get many more on consecutive runs of the application. Anyone know what those classes are and where I can find more information about them? The problem seems to occur more often when the network is busy. The application itself is not doing any networking. Of course, somewhere under the covers, networking is being done to export the display. I saw a bug on Sun's Developer site that sounds like this problem, but I don't really know how to interpret the failure. I did turn on tracing on the last executed line of application code before the failure. The hundreds of lines of trace shed more smoke than light. Any ideas? From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Sat Feb 07 02:52:21 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 11867 invoked from network); 6 Feb 1998 18:52:16 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 7 Feb 1998 02:52:16 -0000 Received: (qmail 26127 invoked by uid 1052); 6 Feb 1998 18:52:14 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 26098 invoked from network); 6 Feb 1998 18:52:13 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 7 Feb 1998 02:52:13 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id SAA28452 for CSCI397C-08-L; Fri, 6 Feb 1998 18:52:10 -0800 (PST) Received: from doc.center.uscs.com (doc.center.uscs.com [165.79.32.51]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id SAA28447 for ; Fri, 6 Feb 1998 18:52:03 -0800 (PST) Received: (from jimd@localhost) by doc.center.uscs.com (AIX4.2/UCB 8.7/8.7) id SAA68592; Fri, 6 Feb 1998 18:53:51 -0800 (PST) Date: Fri, 6 Feb 1998 18:53:51 -0800 (PST) From: James Donaldson Message-Id: <199802070253.SAA68592@doc.center.uscs.com> To: csci397c-08@wombat.ecst.csuchico.edu Subject: GUI-Application Relationship Cc: jimd@doc.center.uscs.com Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 26387 Group, I agree with Wayne (see letter attached below), the application should not have knowledge of the GUI. However I don't think the GUI should know about application. To truly separate the application and GUI we need a third class called the Interface class. If you look at the Delegation Event Model below from the Java web site you will see the application instantiates both the App and the GUI classes passing the app object to the gui object through the constructor for the GUI. This means the application needs to know about the GUI class, more importantly the javac compiler will need "see" the GUI class definition in order to build the App class. A question was raised in class regarding who instatiates who. This is a valid question if follow Sun's Event Model example. With an Interface you have a third class, with a main() that can instantiate all the objects and act as the "Interface" between application and GUI. This Interface can call methods from the App and GUI classes in response to events from the GUI. I have an working example of how this works below Sun's Event example. Note that to do a sort the Interface class calls a Gui method, Gui.GetText() to get the text to sort and passes in to an App method, App.SetText(). Now the application has the text to sort and Interface can call App.SortText() to do the sort. To pass the sorted text back to the GUI for display we call App.GetText() to get the sorted text and pass it to the Gui.SetText() method. The Interface class knows the App and Gui class methods and acts as a dispatcher to call the appropriate methods for each event. Of course all the real action is done in the listener classes. In this example there are two listener classes. The ButtonListener "belongs" to the Interface class while the FindButtonListener is a associated with the Gui class. ----------------------------------------------------------------------- Sun's Delegation Event Model example : import java.awt.*; import java.awt.event.*; public class App { public void search() { /* do search operation ...*/ System.out.println("Searching..."); } public void sort() { /* do sort operation ...*/ System.out.println("Sorting...."); } static public void main(String args[]) { App app = new App(); GUI gui = new GUI(app); } } class Command implements ActionListener { static final int SEARCH = 0; static final int SORT = 1; int id; App app; public Command(int id, App app) { this.id = id; this.app = app; } public void actionPerformed(ActionEvent e) { switch(id) { case SEARCH: app.search(); break; case SORT: app.sort(); break; } } } class GUI { public GUI(App app) { Frame f = new Frame(); f.setLayout(new FlowLayout()); Command searchCmd = new Command(Command.SEARCH, app); Command sortCmd = new Command(Command.SORT, app); Button b; f.add(b = new Button("Search")); b.addActionListener(searchCmd); f.add(b = new Button("Sort")); b.addActionListener(sortCmd); List l; f.add(l = new List()); l.add("Alphabetical"); l.add("Chronological"); l.addActionListener(sortCmd); f.pack(); f.show(); } } ---------------------------------------------------------------------------- My interface example : Interface.java : import java.awt.*; /** * This class links the functionality of the application and GUI * classes. It instantiates the major classes and creates event objects. * * Public methods : * main() - Instantiate the major classes. * GetButtonListener - Instantiate button event objects. * Quit() - Call dispose method on instantiated * objects and exit the system. * Interface() - Default constructor (no override). * * @version 1.0 02/04/98 * @author James G. Donaldson * */ public class Interface { /** * Instantiate the major classes, call GUI function to create event * objects, and call GUI function to start the GUI. */ public static void main(String[] args) { theInterface = new Interface(); gui = new Gui(theInterface); app = new App(theInterface); gui.SetEventHandlers(); gui.ShowIt(); } /** * Return a pointer to button event handler that has handles to the * major classes. */ public ButtonListener GetButtonListener(int ButtonId) { return new ButtonListener(this, app, gui, ButtonId); } /** * Call dispose method on Instantiated objects and exit the system. */ public void Quit() { app.Dispose(); gui.Dispose(); System.exit(0); } /** * The quit button id for listeners */ public static final int INTER_QUIT = 0; /** * The sort button id for listeners */ public static final int INTER_SORT = 1; /** * The find button id for listeners */ public static final int INTER_FIND = 2; // we keep handles to the major classes so we can pass them to the // event handlers where the appropriate methods are called in response // to events (dispatching). private static App app; private static Gui gui; private static Interface theInterface; } **************************************************************************** ButtonListener.java : import java.awt.event.*; /** * Event handler for the gui buttons. This class is instantiated * by the GetButtonListener() method in the Interface class. The * Interface class has handles to the application and gui objects * which are passed in to this class. Here is where the interface * between the application and the GUI is handled. Methods from the * application and gui classes are called in response to button events. * * Public methods : * ButtonListener() - Constructor, passes in pointers to * the Interface, App, and Gui objects. * Passes in the button identifier. * actionPerformed() - Called by system in response to gui button * events. Methods from the Interface, * App, and Gui classes are called in * response to button events based on * the button id. * * @version 1.0 02/05/98 * @author James G. Donaldson * */ public class ButtonListener implements ActionListener { /** * Constructor, passes in pointers to the Interface, App, and Gui * objects. Passes in the button identifier. */ public ButtonListener(Interface ThisInterface, App ThisApp, Gui ThisGui, int ThisId) { theInterface = ThisInterface; app = ThisApp; gui = ThisGui; buttonId = ThisId; } /** * Called by system in response to gui button events. Methods from * the Interface, App, and Gui classes are called in response to * button events based on the button id. */ public void actionPerformed(ActionEvent ActionEvt) { switch (buttonId) { case Interface.INTER_QUIT: theInterface.Quit(); break; case Interface.INTER_SORT: app.SetText(gui.GetText()); app.SortText(); gui.SetText(app.GetText()); break; case Interface.INTER_FIND: String findString; int index; if ((findString = gui.Find()) != null) { app.SetFindText(findString); app.SetText(gui.GetText()); if (app.FindText()) gui.HighLightFoundText(); } break; } } private int buttonId; private App app; private Gui gui; private Interface theInterface; } **************************************************************************** App.java : import java.util.*; /** * The application. * * Public methods : * App(Interface) - Constructor will assign handle of the * Interface object to internal field, * theInterface. * SortText() - Shell sort example from page 99 of the Core * Java book, Volume I. Modified to use * internal vector intead of passed in integer * array and to sort string data. * FindText() - Search for text from the findTextString * String object in the internal vector, * textVector. Returns true if text is found. * SetText() - Parse out each line in the passed in * String object and put into the internal * vector, textVector. * SetFindText() - Sets the internal field, findText. * GetText() - Returns string pointer to text data from the * internal vector, textVector. * Dispose() - Clean up, currently stubbed. * * @version 1.0 * @author James G. Donaldson */ public class App { /** * Constructor that will assign handle of the Interface object to * internal field, theInterface. */ public App(Interface ThisInterface) { theInterface = ThisInterface; } /** * Shell sort example from page 99 of the Core Java book, Volume I. * Modified to use internal vector intead of passed in integer * array and to sort string data. */ public void SortText() { int length; int incr; int i; int j; String tempString; length = textVector.size(); incr = length / 2; while (incr >= 1) { for (i = incr; i < length; i++) { j = i; tempString = (String)textVector.elementAt(i); while(j >= incr && tempString.compareTo((String)textVector.elementAt(j-incr))<0) { textVector.setElementAt((String)textVector.elementAt(j-incr),j); j -= incr; } textVector.setElementAt(tempString, j); } incr /= 2; } } /** * Search for the text from the findTextString String object in the * internal vector, textVector. Returns true if text is found. * Assigns findIndex with the element number in the textVector * where text is found or -1 if the text is not found. Assigns * foundTextString with the entire line where the text is found or * null if the text is not found. */ public boolean FindText() { for (int i = 0; i < textVector.size(); i++) { foundTextString = (String)textVector.elementAt(i); if (foundTextString.indexOf(findTextString) != -1) { findIndex = i; return true; } } findIndex = -1; foundTextString = null; return false; } /** * Parse out each line in the passed in String object and put into * the internal vector, textVector. */ public void SetText(String TextString) { int index; int lastIndex; int length; lastIndex = 0; textVector = new Vector(); // parse out each line and put into the line vector (textVector) while((index = TextString.indexOf("\n", lastIndex)) > 0) { textVector.addElement(TextString.substring(lastIndex, index)); lastIndex = index + 1; } if (lastIndex != (length = TextString.length())) textVector.addElement(TextString.substring(lastIndex, length)); } /** * Sets the internal field, findText with text from the passed in * String object. */ public void SetFindText(String FindTextString) { findTextString = FindTextString; } /** * Returns string pointer to text data from the internal vector, * textVector. Each element from the vector is delimited by a new * line ('\n') character in the returned String object. */ public String GetText() { int i; textString = new String(); for (i = 0; i < textVector.size(); i++) { textString += textVector.elementAt(i); textString += "\n"; } return textString; } /** * Clean up, currently stubbed. */ public void Dispose() { // cleanup } private int findIndex; private String textString; private String findTextString; private String foundTextString; private Vector textVector; private Interface theInterface; } **************************************************************************** Gui.java : import java.awt.*; /** * The user interface. * * Public methods : * Gui(Interface) - Constructor that will assign handle * of the Interface object to internal * field, theInterface, set the GUI * frame layouts, instatiate component * objects, and add components to frame. * SetEventHandlers() - Instantiate the button event listeners. * ShowIt() - Set title, size, and start GUI. * GetText() - Returns string pointer to text data * from the TextArea object. * SetText() - Sets the text data in the TextArea * object. * SetFindText() - Sets the internal field, findText. * Find() - Display dialog to get the text to * find, returns pointer to find text. * HighLightFoundText() - Highlight the found text in the * TextArea object. * Dispose() - Clean up, currently stubbed. * * @version 1.0 * @author James G. Donaldson */ public class Gui extends Frame { /** * Constructor will assign handle of the Interface object to internal * field, theInterface, set the frame layouts, instatiate component * objects, and add components to frame. */ public Gui(Interface ThisInterface) { // init local Interace pointer theInterface = ThisInterface; // set this Frame to border layout setLayout(new BorderLayout()); // instanciate the components northPanel = new Panel(); southPanel = new Panel(); centerPanel = new Panel(); quitButton = new Button("Quit"); searchButton = new Button("Search"); sortButton = new Button("Sort"); textArea = new TextArea(20, 40); // set panel layout managers northPanel.setLayout(new FlowLayout()); southPanel.setLayout(new FlowLayout()); centerPanel.setLayout(new FlowLayout()); // add the components to the panels southPanel.add(quitButton); northPanel.add(searchButton); northPanel.add(sortButton); centerPanel.add(textArea); // add the panels to the frame add("North", northPanel); add("South", southPanel); add("Center", centerPanel); } /** * Override the component paint method so we can set the focus * to the TextArea object. */ public void paint(Graphics graphics) { // set the focus to the text field textArea.requestFocus(); // fix windows bug, when disposing the find dialog the gui // window was put behind the parant dos window toFront(); // call components paint() method super.paint(graphics); } /** * Instantiate the button event listeners by calling the interfaces * public method, GetButtonListener(). This needs to be done after * all the major objects have been instatiated so we can pass their * initialized handles to these objects. Note - only the interface * object has handles to both the application and gui objects. */ public void SetEventHandlers() { quitListener = theInterface.GetButtonListener(theInterface.INTER_QUIT); sortListener = theInterface.GetButtonListener(theInterface.INTER_SORT); searchListener = theInterface.GetButtonListener(theInterface.INTER_FIND); quitButton.addActionListener(quitListener); searchButton.addActionListener(searchListener); sortButton.addActionListener(sortListener); } /** * Set the title, size, and start the GUI. This cannot be done in * the constructor because we need to get the event handlers after * all major objects have been instatiated. */ public void ShowIt() { setTitle("The GUI"); pack(); show(); } /** * Returns string pointer to text data from the TextArea object. */ public String GetText() { return textArea.getText(); } /** * Sets the text data in the TextArea object. */ public void SetText(String TextString) { textArea.setText(TextString); } /** * Sets the internal field, findText. */ public void SetFindText(String FindText) { findText = FindText; } /** * Display dialog to get the text to find, returns pointer to find * text. */ public String Find() { FindDialog findDialog = new FindDialog(this); return findText; } /** * Highlight the found text in the TextArea object. */ public void HighLightFoundText() { int startLocation; startLocation = textArea.getText().indexOf(findText); if (startLocation != -1) textArea.select(startLocation, startLocation + findText.length()); } /** * Clean up, currently stubbed. */ public void Dispose() { // cleanup } /** * The cancel button id for listeners */ public static final int GUI_CANCEL = 0; /** * The find button id for listeners */ public static final int GUI_FIND = 1; private String findText; private Button quitButton; private Button searchButton; private Button sortButton; private TextArea textArea; private Panel northPanel; private Panel southPanel; private Panel centerPanel; private ButtonListener quitListener; private ButtonListener sortListener; private ButtonListener searchListener; private Interface theInterface; } **************************************************************************** FindButtonListener.java : import java.awt.event.*; /** * Event handler for all the buttons in the find dialog. * * Public methods : * FindButtonListener() - Constructor, passes in pointers to * the Gui and FindDialog objects * Passes in the button identifier. * actionPerformed() - Called by system in response to * find dialog button events. Methods * from the Gui and FindDialog classes * are called in response to button * events based on the button id. * * @version 1.0 02/05/98 * @author James G. Donaldson * */ public class FindButtonListener implements ActionListener { /** * Constructor, passes in pointers to the Gui and FindDialog * objects. Passes in the button identifier. */ public FindButtonListener(Gui ThisGui, FindDialog ThisDialog, int ThisId) { gui = ThisGui; findDialog = ThisDialog; id = ThisId; } /** * Called by system in response to find dialog button events. * Methods from the Gui and FindDialog classes are called in * response to button events based on the button id. */ public void actionPerformed(ActionEvent ActionEvt) { switch (id) { case Gui.GUI_CANCEL: gui.SetFindText(null); findDialog.dispose(); gui.toFront(); break; case Gui.GUI_FIND: gui.SetFindText(findDialog.GetFindText()); findDialog.dispose(); gui.toFront(); break; } } private int id; private Gui gui; private FindDialog findDialog; } **************************************************************************** FindDialog.java : import java.awt.*; /** * Get the text to find. * * Public methods : * FindDialog(Gui ThisGui) - Constructor that will assign handle * of the gui object to internal field, * gui, set the dialog layouts, instatiate * component and listener objects, and add * components and listeners to the dialog. * paint() - Overridden so we can set focus to * the text field. * GetFindText() - Returns pointer to find text string. */ public class FindDialog extends Dialog { /** * Constructor will call parent constructor to set parent window, * dialog title, and dialog as modal. Assign handle of the gui * object to internal field, gui, set the dialog layouts, instatiate * component and listener objects, and add components and listeners * to dialog. */ public FindDialog(Gui ThisGui) { super((Frame)ThisGui, "Find", true); gui = ThisGui; // set this Frame to border layout setLayout(new BorderLayout()); // instanciate the components northPanel = new Panel(); southPanel = new Panel(); findButton = new Button("Find"); cancelButton = new Button("Cancel"); findLabel = new Label("Find What :"); findTextField = new TextField("", 24); // instantiate the button listeners findListener = new FindButtonListener(gui, this, Gui.GUI_FIND); cancelListener = new FindButtonListener(gui, this, Gui.GUI_CANCEL); // add the button listeners findButton.addActionListener(findListener); cancelButton.addActionListener(cancelListener); // set panel layout managers northPanel.setLayout(new FlowLayout()); southPanel.setLayout(new FlowLayout()); // add the components to the panels northPanel.add(findLabel); northPanel.add(findTextField); southPanel.add(findButton); southPanel.add(cancelButton); // add the panels to the frame add("North", northPanel); add("South", southPanel); // set the size and show the dialog pack(); show(); } /** * Override the container paint method so we can set the focus * to the TextField object. */ public void paint(Graphics graphics) { // set the focus to the text field findTextField.requestFocus(); // call components paint() method super.paint(graphics); } /** * Returns pointer to find text string, used by find button * listener to get the find text and pass it to the gui object. */ public String GetFindText() { return findTextField.getText(); } private Button cancelButton; private Button findButton; private Label findLabel; private TextField findTextField; private Panel northPanel; private Panel southPanel; private FindButtonListener findListener; private FindButtonListener cancelListener; private Gui gui; } ------------------------------------------------------------------------- Thanks, James Donaldson. phone (916) 939-6008 email jimd@center.uscs.com ------------------------------------------------------------------------- Wayne Cannon's email : I suggest that the application, in general, should have NO knowledge of the GUI. That means NO reference to the GUI passed as a parameter and that the application should NOT instantiate the GUI. Here is my rationale. [I am more familiar with the Model-View-Controller (or more simply, Model-View) paradigm--MVC--so forgive me if I accidentally lapse in my terminology.] Knowledge: 1. The GUI/View has knowledge of the Application/Model. 2. The Application/Model has NO knowledge of the GUI/View. Aside from clean designs and academic purity (neither are bad reasons by themselves), there are some very good reasons for separating the Application from the GUI. One very common advantage is the ability to have more than one GUI/View for any given Application/Model instance. Here are some common examples: 1. A Web page with source views and "browser" views. 2. A word processor document with multiple views into different segments of the document and possibly an additional "print preview" view. 3. A resistor [electronics] with a schematic GUI/View (zig-zag line), a layout GUI/View (a rectangle and lines representing the body and leads respectively), a simulation GUI/View (electrical behavior, e.g., a plot current versus voltage), a textual GUI/View ("R=50 ohms 1/4 watt"), and a material-list GUI/View ("Part #1234-5678"). The Application/Model is simply an object with two or three simple instance variables. Often, new GUIs/Views are imagined and implemented long (years) after the Application/Model. If the Application/Model has no knowledge of the GUI/View, then many GUIs/Views (of many different types) can "view" the model at any time, and they can come and go with no concern or impact on the model. In general, I have adopted the following: 1. The GUI/View has knowledge of the Application/Model. 2. The Application/Model has NO knowledge of the GUI/View. This makes it completely abstract of various views. Smalltalk (and Java) have a very nice mechanism to deal with updating the GUI/View when there is a change in the Application/Model--the "dependency" mechanism. In Smalltalk, the Object class implements the dependency mechanism. It allows any (GUI/View) class to "register" an autonomous dependency on any other (Application/Model) class. The Application/Model maintains a list of dependents, but has no knowledge about them, other than that they want to be notified of changes. Whenever there is a change, it sends itself a "changed" message which the base class (Object) then broadcasts as a "notify" message to all dependent classes. The default "notify" messages can be simple, putting the responsibility on the GUIs/Views to query the Application/Model for any needed information on changes. However, more complex notify messages can be created that include information on the nature of the changes within the notify message. Any thoughts or challenges? Wayne Cannon From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Tue Feb 10 14:51:01 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 2659 invoked from network); 10 Feb 1998 06:50:55 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 10 Feb 1998 14:50:55 -0000 Received: (qmail 8101 invoked by uid 1052); 10 Feb 1998 06:50:51 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 8041 invoked from network); 10 Feb 1998 06:50:40 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 10 Feb 1998 14:50:40 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id GAA02577 for CSCI397C-08-L; Tue, 10 Feb 1998 06:50:38 -0800 (PST) Received: from palrel3.hp.com (palrel3.hp.com [156.153.255.226]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id GAA02572 for ; Tue, 10 Feb 1998 06:50:11 -0800 (PST) Received: from srmail.sr.hp.com (srmail.sr.hp.com [15.4.45.14]) by palrel3.hp.com (8.8.5/8.8.5tis) with ESMTP id GAA12439; Tue, 10 Feb 1998 06:50:06 -0800 (PST) Received: from cheetah.sr.hp.com by srmail.sr.hp.com with ESMTP (1.37.109.16/15.5+ECS 3.3) id AA147952204; Tue, 10 Feb 1998 06:50:04 -0800 Received: from sr.hp.com (tmbrwolf.sr.hp.com) by cheetah.sr.hp.com with ESMTP (1.37.109.16/15.5+ECS 3.3) id AA002172201; Tue, 10 Feb 1998 06:50:01 -0800 Message-Id: <34E06916.D11098C7@sr.hp.com> Date: Tue, 10 Feb 1998 06:49:59 -0800 From: Jean Tillinghast X-Mailer: Mozilla 4.04 [en] (X11; I; HP-UX B.10.20 9000/715) Mime-Version: 1.0 To: csci397c-08@wombat.ecst.csuchico.edu, nhnguye@pacbell.com, wang@hpprsd1.sc.hp.com, jeantt@sr.hp.com, george.greene@tandem.com, greenejv@us.ibm.com, ron.su@tandem.com, Marcia_Paulson@hp.com, RicketsC@AV8BMX.chinalake.navy.mil, pam.ross@sunmail.chinalake.navy.mil, brianm@hprrc725.rose.hp.com, trungn@hp-vcd.vcd.hp.com, jimd@center.uscs.com, holly.hayes@bently.com, jloyd@hpbs972.boi.hp.com, tina@ndti.net, craigm@llnl.gov, wayne_cannon@hp.com, dcarter@us.ibm.com, veasna@cv.hp.com, david_paulson@hp.com, spuds@mackenzie.gardnerville.nv.us, anne.mackenzie@bently.com Subject: HP-UX JVM question Content-Type: multipart/alternative; boundary="------------550DE7C37B038D2828556CF1" Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 3747 --------------550DE7C37B038D2828556CF1 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Someone (I lost the original message) sent out a question about the HP-UX implementation of the JVM: > > I am curious. > One of Dr. Keuneke's web pages mentioned that there have been some > problems with the HP-UX implementation of the JVM on the machines > at Chico. Have any of you experienced these problems and what did they > look like? > > I have a problem with a java application running on one HP-UX 10.20 > machine with a 1.1.3 JVM. The display is exported to a 9.X HP-UX > machine running a VUE display. Rarely, I get core dumps either in the > screenUpdater class or the ProcessReaper class. When I get a core dumps > I get many more on consecutive runs of the application. Anyone know what > those classes are and where I can find more information about them? The > problem seems to occur more often when the network is busy. The > application itself is not doing any networking. Of course, somewhere > under the covers, networking is being done to export the display. > I saw a bug on Sun's Developer site that sounds like this problem, > but I don't really know how to interpret the failure. > > I did turn on tracing on the last executed line of application code > before the failure. The hundreds of lines of trace shed more smoke than > light. Any ideas?-- I sent the message above off to the group working in the HP-UX JVM and got back the following request: Do you have a test case for the bug you submitted? Could the person that had the question send me more information and I will forward it on. thanks, jean --- Jean Tillinghast (707) 577-3655 or beeper# 325-6681 fax: (707) 577-2036 email jeantt@sr.hp.com --------------550DE7C37B038D2828556CF1 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit Someone (I lost the original message) sent out a question about the HP-UX implementation of the JVM:
 
>
> I am curious.
> One of Dr. Keuneke's web pages mentioned that there have been some
> problems with the HP-UX implementation of the JVM on the machines
> at Chico. Have any of you experienced these problems and what did they
> look like?
>
> I have a problem with a java application running on one HP-UX 10.20
> machine with a 1.1.3 JVM. The display is exported to a 9.X HP-UX
> machine running a VUE display.   Rarely, I get core dumps either in the
> screenUpdater class or the ProcessReaper class. When I get a core dumps
> I get many more on consecutive runs of the application. Anyone know what
> those classes are and where I can find more information about them? The
> problem seems to occur more often when the network is busy. The
> application itself is not doing any networking. Of course, somewhere
> under the covers, networking is being done to export the display.
> I saw a bug on Sun's Developer site that sounds like this problem,
>  but I don't really know how to interpret the failure.
>
> I did turn on tracing on the last executed line of application code
> before the failure. The hundreds of lines of trace shed more smoke than
> light. Any ideas?-- 
I sent the message above off to the group working in the HP-UX JVM and got back
the following request:
Do you have a test case for the bug you submitted?
Could the person that had the question send me more information and
I will forward it on.


thanks,
jean
--- 
Jean Tillinghast
(707) 577-3655 or beeper# 325-6681
fax: (707) 577-2036
email   jeantt@sr.hp.com
  --------------550DE7C37B038D2828556CF1-- From jloyd@hpbs972.boi.hp.com Sun Feb 15 03:25:40 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 15110 invoked from network); 14 Feb 1998 19:25:39 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 15 Feb 1998 03:25:39 -0000 Received: (qmail 3059 invoked by uid 1052); 14 Feb 1998 19:25:39 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 3055 invoked from network); 14 Feb 1998 19:25:38 -0800 Received: from palrel1.hp.com (156.153.255.242) by pitbull.ecst.csuchico.edu with SMTP; 15 Feb 1998 03:25:38 -0000 Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel1.hp.com (8.8.6/8.8.5tis) with SMTP id TAA22303 for ; Sat, 14 Feb 1998 19:25:34 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA20224; Sat, 14 Feb 1998 20:26:53 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD3986.B244DBE0@hpb18347.boi.hp.com>; Sat, 14 Feb 1998 20:25:31 -0700 Message-Id: <01BD3986.B244DBE0@hpb18347.boi.hp.com> From: Jerry Loyd To: "Anne Keuneke (E-mail)" Subject: I might have to beg for mercy.... Date: Sat, 14 Feb 1998 20:28:43 -0700 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Status: RO Content-Length: 1671 Dr. Keuneke, As discussed earlier, I've been using the Borland JBuilder tool for your = Advanced Java class. Oh, wow, is it totally cool. It's like that = BeanBox thing, but on massive steroids. In fact, I now have working a = most excellent applet. I took the "model" from the CSCI-152 class, in = which we simulate a page faulting OS, and I added a nice GUI to it. = It's got tab sheets, progress bars, drop-down choice controls... it has = it all. It makes that dumb little project just whistle dixie. When I = solve the problem mentioned below, I'm going to send the URL to Hilzer - = I think he'll have a heart attack when he sees it. Well... it turns out that "deployment" is about the hottest issue with = JBuilder. Although they have included a Deployment Wizard, which is = supposed to generate JAR files with everything one needs to run the = applett... it just doesn't seem to work. The only way I can run my = applet is from the Borland IDE. I'd feel bad, maybe even stupid, except = that by viewing www.dejanews.com, I've found out I'm not alone. The = issue is so hot that a Borland rep mentioned there is a new Deployment = discussion group. Unfortunately, for some reason, I can't get to *any* = of the Borland forums. I will keep working at this, and do what I can. But I may have painted = myself into a corner. I'll get the serialization stuff working, etc. I = guess I've stumbled on one of the most signficant issues of professional = JAVA development. I'll keep you posted, but I wanted to give you early warning. Yes, Dr. = Keuneke, I didn't turn my homework in because a dog ate it. Totally immersed in Java, Jerry Loyd From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Mon Feb 16 22:43:15 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 6439 invoked from network); 16 Feb 1998 14:43:08 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 16 Feb 1998 22:43:08 -0000 Received: (qmail 8437 invoked by uid 1052); 16 Feb 1998 14:43:03 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 8408 invoked from network); 16 Feb 1998 14:43:02 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 16 Feb 1998 22:43:02 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id OAA09159 for CSCI397C-08-L; Mon, 16 Feb 1998 14:43:00 -0800 (PST) Received: from palrel1.hp.com (palrel1.hp.com [156.153.255.242]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id OAA09154 for ; Mon, 16 Feb 1998 14:42:14 -0800 (PST) Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel1.hp.com (8.8.6/8.8.5tis) with SMTP id OAA17425 for ; Mon, 16 Feb 1998 14:42:06 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA07773; Mon, 16 Feb 1998 15:43:35 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD3AF1.6E06A320@hpb18347.boi.hp.com>; Mon, 16 Feb 1998 15:42:04 -0700 Message-Id: <01BD3AF1.6E06A320@hpb18347.boi.hp.com> From: Jerry Loyd To: "Anne Keuneke (E-mail 2)" Subject: JBuilder, deployment problems Date: Mon, 16 Feb 1998 15:45:39 -0700 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 632 Is anybody else using Borland's JBuilder? If so, have you had any luck with "deploying" an applet or application? Using DejaNews, I was able to find almost 100 newsgroup articles on = problems with moving an app you've written with JBuilder, to some other = PC or server. It's such a big issue, Borland now has a complete "forum" = set aside for it. Unfortunately, when I try to connect to any of the = Borland forums, I get a message that the server has no DNS entry. Any help would be greatly appreciated. I'll keep plugging away, but if = there's a special trick I'll never find, I'd like to hear about it. Jerry Loyd From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Mon Feb 16 22:43:15 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 6439 invoked from network); 16 Feb 1998 14:43:08 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 16 Feb 1998 22:43:08 -0000 Received: (qmail 8437 invoked by uid 1052); 16 Feb 1998 14:43:03 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 8408 invoked from network); 16 Feb 1998 14:43:02 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 16 Feb 1998 22:43:02 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id OAA09159 for CSCI397C-08-L; Mon, 16 Feb 1998 14:43:00 -0800 (PST) Received: from palrel1.hp.com (palrel1.hp.com [156.153.255.242]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id OAA09154 for ; Mon, 16 Feb 1998 14:42:14 -0800 (PST) Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel1.hp.com (8.8.6/8.8.5tis) with SMTP id OAA17425 for ; Mon, 16 Feb 1998 14:42:06 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA07773; Mon, 16 Feb 1998 15:43:35 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD3AF1.6E06A320@hpb18347.boi.hp.com>; Mon, 16 Feb 1998 15:42:04 -0700 Message-Id: <01BD3AF1.6E06A320@hpb18347.boi.hp.com> From: Brian Pomerantz To: "Anne Keuneke (E-mail 2)" Subject: JBuilder, deployment problems Date: Mon, 16 Feb 1998 15:45:39 -0700 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 632 What exactly are you doing to "deploy" your application? I've had no problems running their classes on other machines and platforms. You need to make sure you copy over the runtime zip files (or if it's an applet, make it available on the web). Also, you need to explicitly include the zip file in your CLASSPATH if you run an application. Here is an example on a UNIX system: =20 export CLASSPATH=3D.:/opt/java/lib:/opt/java/lib/classes.zip:\ /user/s3/bapper/src/classes/gjt.zip:\ /user/s3/bapper/src/borland/jbcl-rt.zip:\ #borland classes /user/s3/bapper/src/borland/jclass.zip:\ #borland classes /user/s3/bapper/src/borland/jgl.zip #borland classes I haven't tried it with an applet, so I don't know if this will work. I think you need to unzip the files that contain the classes you use and put them in the directory that you put your applet in on the web server. If your applet is part of a package, then you need to put the Borland packages in the directory that you would consider root to your applet. Foo is a package, Foo.class is an applet in Foo: ~/public_html/java/Foo/Foo.class Put the Borland stuff here: ~/public_html/java/ When you unzip the files, they contain directories coresponding to the packages that are in the files and the classes that are in those packages. If you meant something else by "deploy", I guess you can ignore the stuff above. :-) BAPper From jloyd@hpbs972.boi.hp.com Wed Feb 18 00:29:29 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 3537 invoked from network); 17 Feb 1998 16:29:28 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 18 Feb 1998 00:29:28 -0000 Received: (qmail 25562 invoked by uid 1052); 17 Feb 1998 16:29:12 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 25558 invoked from network); 17 Feb 1998 16:29:12 -0800 Received: from palrel1.hp.com (156.153.255.242) by pitbull.ecst.csuchico.edu with SMTP; 18 Feb 1998 00:29:12 -0000 Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel1.hp.com (8.8.6/8.8.5tis) with SMTP id QAA22298 for ; Tue, 17 Feb 1998 16:28:17 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA14455; Tue, 17 Feb 1998 17:29:52 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD3BC9.6C9F81E0@hpb18347.boi.hp.com>; Tue, 17 Feb 1998 17:28:13 -0700 Message-Id: <01BD3BC9.6C9F81E0@hpb18347.boi.hp.com> From: Jerry Loyd To: "'Anne M. Keuneke'" Subject: RE: JBuilder, deployment problems Date: Tue, 17 Feb 1998 17:31:56 -0700 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Status: RO Content-Length: 3661 Regarding "deployment" of JBuilder applications.... I was actually just trying to run something, *anything*, outside the = Borland IDE. They were working some kind of magic in that IDE such that = just about anything with the extension "class" would do something = useful. The "magic" is a CLASSPATH environment variable that makes "War and = Peace" look short. Using Borland's "setvars" batch file, I was able to = make that classpath global to my PC, and then running my Java programs = from the command line works. This at least gives me the faith that I can run these programs somewhere = else. Getting it all packaged up in a .zip or .jar file, so that = someone, so far away, on a Platform so radically different, is the next = challenge. I just heard back from Borland, as to why I can't get into their = newsgroups. They say it's because I'm behind a Corporate firewall. = Great. I can read all about how to get the Stevie Ray Vaughn sound with = a guitar, but I can't find out how to make Java sing. Jerry Loyd From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Thu Feb 19 19:11:07 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 20458 invoked from network); 19 Feb 1998 11:11:05 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 19 Feb 1998 19:11:05 -0000 Received: (qmail 13789 invoked by uid 1052); 19 Feb 1998 11:11:04 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 13761 invoked from network); 19 Feb 1998 11:11:03 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 19 Feb 1998 19:11:03 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id LAA11696 for CSCI397C-08-L; Thu, 19 Feb 1998 11:11:01 -0800 (PST) Received: from palrel3.hp.com (palrel3.hp.com [156.153.255.226]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id LAA11691 for ; Thu, 19 Feb 1998 11:10:58 -0800 (PST) Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel3.hp.com (8.8.5/8.8.5tis) with SMTP id LAA19900 for ; Thu, 19 Feb 1998 11:10:57 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA24559; Thu, 19 Feb 1998 12:12:42 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD3D2F.6D53AF00@hpb18347.boi.hp.com>; Thu, 19 Feb 1998 12:10:54 -0700 Message-Id: <01BD3D2F.6D53AF00@hpb18347.boi.hp.com> From: Jerry Loyd To: "Anne Keuneke (E-mail 2)" Subject: Deploying JBuilder applications Date: Thu, 19 Feb 1998 12:14:34 -0700 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 2410 I may have been the only one having troubles with this, but just in case = others were, I've gotten this to work. Here's some simple details. Before doing any of the following, get the JBuilder update from their = Web page. Their instructions are well-written, and easy to follow. = The upgrade makes a *world* of difference, and does completely change = the Deployment Wizard dialogs. 1) Be certain to make all of your classes part of a specific "package". = If you let JBuilder create all the new files for you, this will happen = automatically. It's probably best to change the package name to = something different than the default, when you first create your = project. 2) When ready to move your application, use the "Deployment Wizard". = For now, I'm just using uncompressed-zip, and it's working. Be sure to = include JBCL and if you used any of the JGL stuff, include it too. 3) Let's assume you've created the following: Package name: CSCIproj1 Application name (class that has the Main() method in it): ThinGui Zip file name: yourName.zip 4) A good exercise is to move the zip file to another computer that = doesn't have JBuilder on it, but does have the JDK on it. Assume the = following: jdk classes.zip is in c:\jdk\lib\classes.zip you new zip file is in c:\temp To run the program from an MS-DOS command line prompt, you'd type: java -classpath c:\jdk\lib\classes.zip ; c:\temp\yourName.zip = CSCIproj1.ThinGui Note that there was no need to create any subdirectory with the name of = my package; this is already in the .zip file. The two things I kept getting wrong was to not include my own zip file = in the classpath, and I didn't know I had to use both the package name = and classname when referring to my program. Once I figured that out, it = worked like the proverbial champ. This worked just fine, even moving from a Win '95 machine to a Win NT = 4.0. I did try to move a JBuilder application that used the ButtonBar = bean, which depends on images. The images didn't transfer, and the = buttons were just tiny little things. Borland says that if you add = these .gif files to the project, they'll get put into your .zip or .jar = file. When I find where they got the images, I'll try this. The real test will be to see if Dr. Keuneke can run any of the stuff I = send her. That's it. Jerry Loyd =20 From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Fri Feb 20 03:57:27 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 13194 invoked from network); 19 Feb 1998 19:57:08 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 20 Feb 1998 03:57:08 -0000 Received: (qmail 2066 invoked by uid 1052); 19 Feb 1998 19:57:07 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 2033 invoked from network); 19 Feb 1998 19:57:05 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 20 Feb 1998 03:57:05 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id TAA12035 for CSCI397C-08-L; Thu, 19 Feb 1998 19:57:03 -0800 (PST) Received: from storm.center.uscs.com (storm.center.uscs.com [165.79.32.27]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with SMTP id TAA12030 for ; Thu, 19 Feb 1998 19:56:59 -0800 (PST) Received: by storm.center.uscs.com (AIX 3.2/UCB 5.64/4.03) id AA48001; Thu, 19 Feb 1998 19:58:54 -0800 Date: Thu, 19 Feb 1998 19:58:54 -0800 From: jimd@center.uscs.com (James Donaldson) Message-Id: <9802200358.AA48001@storm.center.uscs.com> To: csci397c-08@wombat.ecst.csuchico.edu Subject: JDC Tech Tips No. 7 Cc: jimd@center.uscs.com Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 8786 Group, I just got this from the Java Developer Connection. It is pretty basic but maybe you can get a tidbit or two out of it. Thanks, James Donaldson. phone (916) 939-6008 email jimd@center.uscs.com ----------------------------------------------------------------- -WELCOME- to the Java(sm) Developer Connection(sm) Tech Tips. This issue covers program assertions, and serialization and transient values. The first technique is useful for checking "should never fail" conditions and terminating an application gracefully. The second is used by Remote Method Invocation to transmit objects over a network. The JDC Team- J D C T E C H T I P S TIPS, TECHNIQUES, AND SAMPLE CODE * Program Assertions * Serialization and Transient Values - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - T I P S , T E CH N I Q U E S , A N D S A M P L E C O D E PROGRAM ASSERTIONS. The languages C and C++ have something called an assert macro, which you can use to check program assertions. For example, a sequence like: char* p = (char*)malloc(10); assert(p); checks whether the pointer returned by the storage allocator is non-zero and terminates the program if it is not. It's interesting to consider one way of adding a similar facility to the Java programming language, for example: public class Assert { private static void fail() { System.err.println("assertion failed:"); Throwable e = new Throwable(); e.printStackTrace(); System.exit(1); } public static void assert(boolean b) { if (!b) fail(); } public static void assert(long lng) { if (lng == 0L) fail(); } public static void assert(double dbl) { if (dbl == 0.0) fail(); } public static void assert(Object ref) { if (ref == null) fail(); } } With this class definition, you can write things like the following: int i = 0; Assert.assert(i < 10); // checks whether i < 10 Object p = f(); Assert.assert(p); // checks that p is non-null If one of these assertion checks fails, the program will terminate with a stack traceback. Note that there are several versions of the assert method. This is necessary because the Java language type system is not as loose as C/C++ in converting to/from logical values. For example, i < 10 has a boolean value, which is not convertible to an integer. So one version of assert is given for booleans, another for byte, char, short, int, and long, another for float and double, and a final one for all reference types. Within the fail method, a new object of type Throwable, the superclass of all exception types, is created as a means of obtaining a current stack traceback. The traceback is printed, and the program terminates. So if you want to check "should never fail" conditions, and terminate an application gracefully in such an event, try this technique. You should find it useful. SERIALIZATION AND TRANSIENT VALUES. The Java programming language incorporates a feature known as serialization, which is used to convert objects (including complex data structures such as lists and trees) into a stream of bytes, for writing to a file or across a network. The stream can later be deserialized and converted back into an object. This feature is very useful for giving objects persistence, and for transmitting them to a remote location. A simple example of serialization looks like this: // write.java import java.io.*; public class write { public static void main(String args[]) { try { FileOutputStream fos = new FileOutputStream("file.out"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(new Test("testing", 37)); oos.flush(); fos.close(); } catch (Throwable e) { System.err.println(e); } } } // read.java import java.io.*; public class read { public static void main(String args[]) { Test testobj = null; try { FileInputStream fis = new FileInputStream("file.out"); ObjectInputStream ois = new ObjectInputStream(fis); testobj = (Test)ois.readObject(); fis.close(); } catch (Throwable e) { System.err.println(e); } System.out.println(testobj.str); System.out.println(testobj.ivalue); } } // Test.java public class Test implements java.io.Serializable { public String str; public transient int ivalue; public Test(String s, int i) { str = s; ivalue = i; } } There are two programs in this example: one that serializes an Test object instance, and the other that reads back the serialized bytes and reconstitutes the object. ObjectOutputStream and ObjectInputStream are layered on top of FileOutputStream and FileInputStream to effect the actual serialization and deserialization, using the writeObject and readObject methods. The Test class implements java.io.Serializable. Serializable is used as a marker interface, that is, it simply flags the fact that a class that implements it has some specific property. Without implementation of this interface, objects of class Test would not be serializable. This example illustrates an interesting aspect of serialization. A field of a class may be declared as transient, meaning that the field is not serialized. In other words, it's not part of the persistent state of an object. An example of where this situation matters is java.util.Hashtable. When a Hashtable object is serialized, the keys and values are written out as pairs of values, rather than written out as the actual table. This is because the underlying hash codes (see Object.hashCode) may differ when the table is reconstructed. In the above example, ivalue has the default value 0 when the saved object is deserialized. Finally, serialization is an important technique to understand, especially as it's used by Remote Method Invocation to transmit objects across a network. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -- EDITOR'S NOTE -- The names on the JDC mailing list are used for internal Sun Microsystems purposes only. To remove your name from the list, see SUBSCRIBE/UNSUBSCRIBE below. -- FEEDBACK -- Comments? Send your feedback on the JDC Tech Tips to: JDCTechTips@Sun.com -- SUBSCRIBE/UNSUBSCRIBE -- If you want to unsubscribe from JDC Email, sign in to the JDC. Then click "Change account information." Type your password, and uncheck the box at the end of the form that says "It's okay to send me JDC Email." The JDC sign-in address is: http://java.sun.com/jdc -- ARCHIVES -- You'll find the JDC Tech Tips archives at: http://developer.javasoft.com/developer/javaInDepth/TechTips/index.html -- COPYRIGHT -- Copyright Sun Microsystems, Inc. All rights reserved. 901 San Antonio Road, Palo Alto, California 94303 USA. This document is protected by copyright. For more information, see: http://developer.javasoft.com/developer/copyright.html The JDC Tech Tips are written by Glen McCluskey. List management and distribution by The Email Channel, a division of FDDS Inc. For more information, send email to fdds@fdds.com. JDC Tech Tips No. 7 February 17, 1998 From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Fri Feb 20 05:11:31 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 21879 invoked from network); 19 Feb 1998 21:11:26 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 20 Feb 1998 05:11:26 -0000 Received: (qmail 10520 invoked by uid 1052); 19 Feb 1998 21:11:24 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 10491 invoked from network); 19 Feb 1998 21:11:23 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 20 Feb 1998 05:11:23 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id VAA12062 for CSCI397C-08-L; Thu, 19 Feb 1998 21:11:21 -0800 (PST) Received: from garlic.com (quake.garlic.com [208.195.160.136]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id VAA12057 for ; Thu, 19 Feb 1998 21:10:38 -0800 (PST) Received: from garlic.com (h.l1.vfr.net [207.212.212.8]) by garlic.com (8.8.6.Beta3/4.03) with ESMTP id VAA71422; Thu, 19 Feb 1998 21:10:00 -0800 Message-ID: <34ED1028.4C8112D0@garlic.com> Date: Thu, 19 Feb 1998 21:10:00 -0800 From: Marcia Paulson X-Mailer: Mozilla 4.04 [en] (WinNT; I) MIME-Version: 1.0 To: csci397c-08@wombat.ecst.csuchico.edu, nhnguye@pacbell.com, wang@hpprsd1.sc.hp.com, jeantt@sr.hp.com, george.greene@tandem.com, greenejv@us.ibm.com, ron.su@tandem.com, Marcia_Paulson@hp.com, RicketsC@AV8BMX.chinalake.navy.mil, pam.ross@sunmail.chinalake.navy.mil, brianm@hprrc725.rose.hp.com, trungn@hp-vcd.vcd.hp.com, jimd@center.uscs.com, holly.hayes@bently.com, jloyd@hpbs972.boi.hp.com, tina@ndti.net, craigm@llnl.gov, wayne_cannon@hp.com, wcannon@wco.com, dcarter@us.ibm.com, veasna@cv.hp.com, david_paulson@hp.com, spuds@mackenzie.gardnerville.nv.us, anne.mackenzie@bently.com, thiha@us.ibm.com, achung@sr.hp.com, jim.steele@bently.com, fung_wilson@tandem.com, wschia@ecst.csuchico.edu, ron_garback@mlngw.chinalake.navy.mil Subject: Java Object Model example? CASE Tools? Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 958 Hi All, I was wondering if their are further recommendations on CASE tools for Java? I downloaded and played with Rational Rose product, but I understand the 'real thing' is very expensive. I also found another tool called 'Pragmatica' (http://pragmasoft.one.net.au) which can parse Java to Object Model or create Java from an Object Model (UML or Booch or SASD code). They have a $59 student version. Seems similar to Rational but a little less horsepower. Along the lines of OOP modeling, are their any URL's or other printed references to good example Object Models that demonstrate the App - GUI - Controller design method, in particular for Java AWT examples. (please don't tell me about Smalltalk's MVC stuff... not close enough). I did not have a good bean-a-lizable sample from 397-23 so I am trying to create something (a waveform displayer) that could be App or Applet. I am stumbling a bit on the Object Model. Thanks, Dave Paulson From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Sun Feb 22 00:00:20 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 16931 invoked from network); 21 Feb 1998 16:00:16 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 22 Feb 1998 00:00:15 -0000 Received: (qmail 4696 invoked by uid 1052); 21 Feb 1998 16:00:14 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 4664 invoked from network); 21 Feb 1998 16:00:13 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 22 Feb 1998 00:00:13 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id QAA13501 for CSCI397C-08-L; Sat, 21 Feb 1998 16:00:10 -0800 (PST) Received: from palrel3.hp.com (palrel3.hp.com [156.153.255.226]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id QAA13496 for ; Sat, 21 Feb 1998 16:00:04 -0800 (PST) Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel3.hp.com (8.8.5/8.8.5tis) with SMTP id QAA25318 for ; Sat, 21 Feb 1998 16:00:00 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA02829; Sat, 21 Feb 1998 17:01:58 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD3EEA.241B9A20@hpb18347.boi.hp.com>; Sat, 21 Feb 1998 16:59:58 -0700 Message-Id: <01BD3EEA.241B9A20@hpb18347.boi.hp.com> From: Jerry Loyd To: "Anne Keuneke (E-mail 2)" Subject: JavaDoc and ADT Date: Sat, 21 Feb 1998 17:03:41 -0700 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 486 I've been playing with the javadoc utility, and am quite impressed. = What a great idea... put the documentation for code right there in the = code. Two questions: 1) It seems that javadoc creates the "abstract data type" information = that Dr. Keuneke is requiring. Is there something I'm not seeing here? 2) Is there a way to get a big "introduction" paragraph into the = javadoc output? I've been putting them on my constructors, which is not = cool. Thanks, Jerry Loyd From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Sun Feb 22 18:37:01 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 21758 invoked from network); 22 Feb 1998 10:36:57 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 22 Feb 1998 18:36:57 -0000 Received: (qmail 285 invoked by uid 1052); 22 Feb 1998 10:36:56 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 253 invoked from network); 22 Feb 1998 10:36:54 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 22 Feb 1998 18:36:54 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id KAA14432 for CSCI397C-08-L; Sun, 22 Feb 1998 10:36:52 -0800 (PST) Received: from shell.wco.com (shell.wco.com [199.4.94.16]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id KAA14427 for ; Sun, 22 Feb 1998 10:36:19 -0800 (PST) Received: from wco.com (mercury5.wco.com [199.4.94.105]) by shell.wco.com (8.8.5/8.8.5/WCO-18jul97) with ESMTP id KAA24354; Sun, 22 Feb 1998 10:35:04 -0800 (PST) Message-ID: <34F06EE5.D48CFB49@wco.com> Date: Sun, 22 Feb 1998 10:31:01 -0800 From: Wayne Cannon Reply-To: wcannon@wco.com X-Mailer: Mozilla 4.04 [en] (WinNT; I) MIME-Version: 1.0 To: csci397c-08@wombat.ecst.csuchico.edu, nhnguye@pacbell.com, wang@hpprsd1.sc.hp.com, jeantt@sr.hp.com, george.greene@tandem.com, greenejv@us.ibm.com, ron.su@tandem.com, Marcia_Paulson@hp.com, RicketsC@AV8BMX.chinalake.navy.mil, pam.ross@sunmail.chinalake.navy.mil, brianm@hprrc725.rose.hp.com, trungn@hp-vcd.vcd.hp.com, jimd@center.uscs.com, holly.hayes@bently.com, jloyd@hpbs972.boi.hp.com, tina@ndti.net, craigm@llnl.gov, wayne_cannon@hp.com, wcannon@wco.com, dcarter@us.ibm.com, veasna@cv.hp.com, david_paulson@hp.com, spuds@mackenzie.gardnerville.nv.us, anne.mackenzie@bently.com, thiha@us.ibm.com, achung@sr.hp.com, jim.steele@bently.com, fung_wilson@tandem.com, wschia@ecst.csuchico.edu, ron_garback@mlngw.chinalake.navy.mil Subject: Help Wanted: Java Programmer Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 2880 The following is from the IBM DailyGrounds, a daily Java e-mail newsletter. From: owner-grounds@mail.software.ibm.com Sat 16:20 Subject: Daily Grounds ==> "Help Wanted: Java Programmer" To: grounds@mail.software.ibm.com _______________________________________________________________ IBM DailyGrounds _______________________________________________________________ February 21, 1998 Help Wanted: Java Programmer The ground-floor opportunities created by major technological innovation precipitate a wave of new start-up companies and usually generate a few new multi-millionaires. The late '70s saw the dawn of the personal computer age which spawned countless tales of millions made (and some lost). The Java industry is shaping up to be no exception. Currently, there are plenty of companies with an urgent need for Java programmers to help finish projects, and there are even more opportunities for people to step in with the right idea to use Java to revolutionize the current market. As a recent LANTimes article (http://www.lantimes.com/lantimes/98/98feb/802bna01a.html) points out, "The demand for experienced Java programmers still far outstrips the supply." Because few in-house software development teams have Java expertise, Java consulting companies are finding some very high-profile clients. For example, take K&A Software (http://www.kasoftware.com), which began operations in 1995, and now has a client list that boasts Boeing, Seagate, Cisco, and Lawrence Livermore National Laboratories. When building custom solutions, Java consulting firms can pitch distinct advantages, such as very rapid development and operability with a wide variety of systems. Consultants tend to be early-adopters of technology because their major selling point is unique knowledge. Eventually, as consultants build more Java solutions, Java expertise will have to move in-house so companies can maintain and improve the technologies they bought. Couple this with the fact that universities are offering courses in Java, which will produce a whole generation of programmers with Java expertise, and it is obvious that the elevator is leaving the ground-floor. Join the discussion: http://javausers.ihost.com/dailygrounds/discussion Submit feedback here: http://javausers.ihost.com/dailygrounds/feedback Daily Grounds site: http://javausers.ihost.com/dailygrounds IBM Java site: http://www.ibm.com/java To subscribe to the Daily Grounds mailing list, go to: http://javausers.ihost.com/dailygrounds/subscribe Or send mail to: majordomo@mail.software.ibm.com with the message: subscribe grounds your@email.address To unsubscribe from the Daily Grounds mailing list, go to: http://javausers.ihost.com/dailygrounds/unsubscribe Or send mail to: majordomo@mail.software.ibm.com with the message: unsubscribe grounds your@email.address From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Tue Feb 24 02:14:14 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 17890 invoked from network); 23 Feb 1998 18:14:03 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 24 Feb 1998 02:14:03 -0000 Received: (qmail 11941 invoked by uid 1052); 23 Feb 1998 18:14:01 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 11908 invoked from network); 23 Feb 1998 18:14:00 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 24 Feb 1998 02:14:00 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id SAA15381 for CSCI397C-08-L; Mon, 23 Feb 1998 18:13:58 -0800 (PST) Received: from expert.ecst.csuchico.edu (expert.ecst.csuchico.edu [132.241.3.127]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id SAA15376 for ; Mon, 23 Feb 1998 18:13:54 -0800 (PST) Received: (from amk@localhost) by expert.ecst.csuchico.edu (8.8.5/8.8.5) id SAA10217; Mon, 23 Feb 1998 18:13:54 -0800 (PST) Date: Mon, 23 Feb 1998 18:13:54 -0800 (PST) From: "Anne M. Keuneke" Message-Id: <199802240213.SAA10217@expert.ecst.csuchico.edu> To: jloyd@hpbs972.boi.hp.com, spock@ecst.csuchico.edu Cc: csci397c-08@wombat.ecst.csuchico.edu Subject: Re: JavaDoc and ADT Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 302 < It seems that javadoc creates the "abstract data type" information << I believe you are seeing everything. Javadoc makes live easy. well, not totally. It organizes everything, but you still need to put in info about the pre and post conditions and the *purpose* of the classes and methods Anne From jloyd@hpbs972.boi.hp.com Sun Mar 01 01:37:18 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 10668 invoked from network); 28 Feb 1998 17:37:17 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 1 Mar 1998 01:37:17 -0000 Received: (qmail 9231 invoked by uid 1052); 28 Feb 1998 17:37:16 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 9224 invoked from network); 28 Feb 1998 17:37:15 -0800 Received: from palrel3.hp.com (156.153.255.226) by pitbull.ecst.csuchico.edu with SMTP; 1 Mar 1998 01:37:15 -0000 Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel3.hp.com (8.8.5/8.8.5tis) with SMTP id RAA10757; Sat, 28 Feb 1998 17:37:14 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA06401; Sat, 28 Feb 1998 18:39:46 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD4477.DDC341C0@hpb18347.boi.hp.com>; Sat, 28 Feb 1998 18:37:04 -0800 Message-Id: <01BD4477.DDC341C0@hpb18347.boi.hp.com> From: Jerry Loyd To: "achung@sr.hp.com" , "'Anne M. Keuneke'" , "anne.mackenzie@bently.com" , "brianm@hprrc725.rose.hp.com" , "craigm@llnl.gov" , "csci397c-08@wombat.ecst.csuchico.edu" To: "david_paulson@hp.com" , "dcarter@us.ibm.com" , "fung_wilson@tandem.com" , "george.greene@tandem.com" , "greenejv@us.ibm.com" , "holly.hayes@bently.com" To: "jeantt@sr.hp.com" , "jim.steele@bently.com" , "jimd@center.uscs.com" , "jloyd@hpbs972.boi.hp.com" , "Marcia_Paulson@hp.com" , "nhnguye@pacbell.com" To: "pam.ross@sunmail.chinalake.navy.mil" , "RicketsC@AV8BMX.chinalake.navy.mil" , "ron.su@tandem.com" , "ron_garback@mlngw.chinalake.navy.mil" , "spuds@mackenzie.gardnerville.nv.us" , "thiha@us.ibm.com" To: "tina@ndti.net" , "trungn@hp-vcd.vcd.hp.com" , "veasna@cv.hp.com" , "wang@hpprsd1.sc.hp.com" , "wayne_cannon@hp.com" , "wcannon@wco.com" To: "wschia@ecst.csuchico.edu" Subject: RE: lab submissions Date: Sat, 28 Feb 1998 18:37:03 -0800 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Status: RO Content-Length: 2790 It looks like I still have an account, somewhere, at Chico,=20 as I still have a web page at http://www.ecst.csuchico.edu/~jloyd/ I was wondering if anybody could remind me which computer I need to telnet or ftp to, in order to add things to that web site. Jerry Loyd ---------- From: Anne M. Keuneke[SMTP:amk@ecst.csuchico.edu] Sent: Saturday, February 28, 1998 12:08 PM To: csci397c-08@wombat.ecst.csuchico.edu; nhnguye@pacbell.com; = wang@hpprsd1.sc.hp.com; jeantt@sr.hp.com; george.greene@tandem.com; = greenejv@us.ibm.com; ron.su@tandem.com; Marcia_Paulson@hp.com; = RicketsC@AV8BMX.chinalake.navy.mil; pam.ross@sunmail.chinalake.navy.mil; = brianm@hprrc725.rose.hp.com; trungn@hp-vcd.vcd.hp.com; = jimd@center.uscs.com; holly.hayes@bently.com; jloyd@hpbs972.boi.hp.com; = tina@ndti.net; craigm@llnl.gov; wayne_cannon@hp.com; wcannon@wco.com; = dcarter@us.ibm.com; veasna@cv.hp.com; david_paulson@hp.com; = spuds@mackenzie.gardnerville.nv.us; anne.mackenzie@bently.com; = thiha@us.ibm.com; achung@sr.hp.com; jim.steele@bently.com; = fung_wilson@tandem.com; wschia@ecst.csuchico.edu; = ron_garback@mlngw.chinalake.navy.mil Subject: lab submissions Sorry to bother all of you, but it has come to my attention that some of you might have missed a tape or two where I talk about lab submissions. In the future, please submit via the following: I have included two links on our class page * documentation requirements: what to submit=20 * New accounts and how to submit labs in the second link I write the following: Please remember that I have a lot of off-sites students (in satellite, video and masters programs) as well as students on campus. It is not reasonable to receive a hundred pieces of mail with disks in them each month a lab is due. Please submit all of your lab requirements by one of the following mechanisms (i.e, ftp or on a web page). Also note that I grade on my SUN workstation (that does not have a disk drive) and it is not feasible to jump around on machines when I am grading this number of submissions. Thanks for your understanding=20 Then the next links tell how to submit. Now, I am aware that the ftp service is not behaving properly - you can make a directory, but not put things there...I have informed the powers on this side and they are fixing it (I received email today saying it was fixed, but when I tried it..nope..so I informed them again.) Finally, don't forget that you do not *have* to submit the serialization lab as a "stand-alone" that you could, instead,=20 submit it *with* lab 2. Thanks again for your understanding. Remember that if I have a hundred labs and each takes 5-10 minutes to grade (usually average 10) then that is 1000 minutes/lab ...about 17 hours, so I hope you can see my situation. Cheers Anne From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Mon Mar 02 02:09:13 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 1865 invoked from network); 1 Mar 1998 18:09:08 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 2 Mar 1998 02:09:08 -0000 Received: (qmail 23391 invoked by uid 1052); 1 Mar 1998 18:09:05 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 23351 invoked from network); 1 Mar 1998 18:09:03 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 2 Mar 1998 02:09:03 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id SAA04520 for CSCI397C-08-L; Sun, 1 Mar 1998 18:09:01 -0800 (PST) Received: from expert.ecst.csuchico.edu (expert.ecst.csuchico.edu [132.241.3.127]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id SAA04515 for ; Sun, 1 Mar 1998 18:08:57 -0800 (PST) Received: (from amk@localhost) by expert.ecst.csuchico.edu (8.8.5/8.8.5) id JAA03526; Mon, 2 Mar 1998 09:58:35 +0800 (GMT) Date: Mon, 2 Mar 1998 09:58:35 +0800 (GMT) From: "Anne M. Keuneke" Message-Id: <199803020158.JAA03526@expert.ecst.csuchico.edu> To: Marcia_Paulson@hp.com, RicketsC@AV8BMX.chinalake.navy.mil, achung@sr.hp.com, amk@ecst.csuchico.edu, anne.mackenzie@bently.com, brianm@hprrc725.rose.hp.com, craigm@llnl.gov, csci397c-08@wombat.ecst.csuchico.edu, david_paulson@hp.com, dcarter@us.ibm.com, fung_wilson@tandem.com, george.greene@tandem.com, greenejv@us.ibm.com, holly.hayes@bently.com, jeantt@sr.hp.com, jim.steele@bently.com, jimd@center.uscs.com, jloyd@hpbs972.boi.hp.com, nhnguye@pacbell.com, pam.ross@sunmail.chinalake.navy.mil, ron.su@tandem.com, ron_garback@mlngw.chinalake.navy.mil, spuds@mackenzie.gardnerville.nv.us, thiha@us.ibm.com, tina@ndti.net, trungn@hp-vcd.vcd.hp.com, veasna@cv.hp.com, wang@hpprsd1.sc.hp.com, wayne_cannon@hp.com, wcannon@wco.com, wschia@ecst.csuchico.edu Subject: RE: lab submissions Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 578 To put stuff on your web pages on acounts *here*, it doesn't matter which machine you ftp or telnet to since they are all cross-mounted. I am not sure if they have you log in to a particular machine for guest accounts, so I cannot say for sure if you can log into any machine... however, some of the servers are: abyss, corpse, ghoul, pathogen, guzzler, spidey For ftp to the directory for turning in things when you are *not* puting them on a webpage, just do ftp ftp.ecst.csuchico.edu as shown at http://www.ecst.csuchico.edu/~amk/foo/csci298C.html/turnInlabs.html Anne From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Sat Feb 28 20:10:05 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 14634 invoked from network); 28 Feb 1998 12:10:01 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 28 Feb 1998 20:10:01 -0000 Received: (qmail 14216 invoked by uid 1052); 28 Feb 1998 12:09:59 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 14190 invoked from network); 28 Feb 1998 12:09:57 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 28 Feb 1998 20:09:57 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id MAA03620 for CSCI397C-08-L; Sat, 28 Feb 1998 12:09:55 -0800 (PST) Received: from expert.ecst.csuchico.edu (expert.ecst.csuchico.edu [132.241.3.127]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id MAA03615 for ; Sat, 28 Feb 1998 12:09:50 -0800 (PST) Received: from expert (localhost [127.0.0.1]) by expert.ecst.csuchico.edu (8.8.5/8.8.5) with SMTP id EAA02100; Sun, 1 Mar 1998 04:08:27 +0800 (GMT) Message-ID: <34F86EBB.79A5@ecst.csuchico.edu> Date: Sun, 01 Mar 1998 04:08:27 +0800 From: "Anne M. Keuneke" X-Mailer: Mozilla 3.01 (X11; I; SunOS 5.5.1 sun4u) MIME-Version: 1.0 To: csci397c-08@wombat.ecst.csuchico.edu, nhnguye@pacbell.com, wang@hpprsd1.sc.hp.com, jeantt@sr.hp.com, george.greene@tandem.com, greenejv@us.ibm.com, ron.su@tandem.com, Marcia_Paulson@hp.com, RicketsC@AV8BMX.chinalake.navy.mil, pam.ross@sunmail.chinalake.navy.mil, brianm@hprrc725.rose.hp.com, trungn@hp-vcd.vcd.hp.com, jimd@center.uscs.com, holly.hayes@bently.com, jloyd@hpbs972.boi.hp.com, tina@ndti.net, craigm@llnl.gov, wayne_cannon@hp.com, wcannon@wco.com, dcarter@us.ibm.com, veasna@cv.hp.com, david_paulson@hp.com, spuds@mackenzie.gardnerville.nv.us, anne.mackenzie@bently.com, thiha@us.ibm.com, achung@sr.hp.com, jim.steele@bently.com, fung_wilson@tandem.com, wschia@ecst.csuchico.edu, ron_garback@mlngw.chinalake.navy.mil Subject: lab submissions Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 1621 Sorry to bother all of you, but it has come to my attention that some of you might have missed a tape or two where I talk about lab submissions. In the future, please submit via the following: I have included two links on our class page * documentation requirements: what to submit * New accounts and how to submit labs in the second link I write the following: Please remember that I have a lot of off-sites students (in satellite, video and masters programs) as well as students on campus. It is not reasonable to receive a hundred pieces of mail with disks in them each month a lab is due. Please submit all of your lab requirements by one of the following mechanisms (i.e, ftp or on a web page). Also note that I grade on my SUN workstation (that does not have a disk drive) and it is not feasible to jump around on machines when I am grading this number of submissions. Thanks for your understanding Then the next links tell how to submit. Now, I am aware that the ftp service is not behaving properly - you can make a directory, but not put things there...I have informed the powers on this side and they are fixing it (I received email today saying it was fixed, but when I tried it..nope..so I informed them again.) Finally, don't forget that you do not *have* to submit the serialization lab as a "stand-alone" that you could, instead, submit it *with* lab 2. Thanks again for your understanding. Remember that if I have a hundred labs and each takes 5-10 minutes to grade (usually average 10) then that is 1000 minutes/lab ...about 17 hours, so I hope you can see my situation. Cheers Anne From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Thu Mar 05 00:15:01 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 17467 invoked from network); 4 Mar 1998 16:15:00 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 5 Mar 1998 00:15:00 -0000 Received: (qmail 18440 invoked by uid 1052); 4 Mar 1998 16:14:59 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 18407 invoked from network); 4 Mar 1998 16:14:57 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 5 Mar 1998 00:14:57 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id QAA07479 for CSCI397C-08-L; Wed, 4 Mar 1998 16:14:55 -0800 (PST) Received: from palrel3.hp.com (palrel3.hp.com [156.153.255.226]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id QAA07474 for ; Wed, 4 Mar 1998 16:14:50 -0800 (PST) Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel3.hp.com (8.8.5/8.8.5tis) with SMTP id QAA18344 for ; Wed, 4 Mar 1998 16:14:48 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA23698; Wed, 4 Mar 1998 17:17:49 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD4791.0A4891C0@hpb18347.boi.hp.com>; Wed, 4 Mar 1998 17:14:50 -0800 Message-Id: <01BD4791.0A4891C0@hpb18347.boi.hp.com> From: Jerry Loyd To: "'csci397c-08@wombat.ecst.csuchico.edu'" Subject: JBuilder, Installing Beans Date: Wed, 4 Mar 1998 16:18:28 -0800 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 605 Has anyone installed a non-Borland Bean onto the JBuilder component = palette? I've done this with some of the CoreJavaBook bean samples. They add to = the palette just fine, they can be dragged and dropped onto panels just = fine, the object inspector shows all the properties and events, just as = you would expect. =20 However, when I try to compile the program that uses one of these Beans, = it chokes on the "import" line. The IDE keeps adding the line import .*; I've tried to find what might work, but just can't. If anybody else has worked through this, please let me know. Jerry Loyd From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Thu Mar 05 01:42:54 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 29531 invoked from network); 4 Mar 1998 17:42:52 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 5 Mar 1998 01:42:52 -0000 Received: (qmail 397 invoked by uid 1052); 4 Mar 1998 17:42:49 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 364 invoked from network); 4 Mar 1998 17:42:48 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 5 Mar 1998 01:42:48 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id RAA07537 for CSCI397C-08-L; Wed, 4 Mar 1998 17:42:46 -0800 (PST) Received: from palrel3.hp.com (palrel3.hp.com [156.153.255.226]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id RAA07532 for ; Wed, 4 Mar 1998 17:42:43 -0800 (PST) Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel3.hp.com (8.8.5/8.8.5tis) with SMTP id RAA17073 for ; Wed, 4 Mar 1998 17:42:41 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA23898; Wed, 4 Mar 1998 18:45:42 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD479D.50FC6E00@hpb18347.boi.hp.com>; Wed, 4 Mar 1998 18:42:43 -0800 Message-Id: <01BD479D.50FC6E00@hpb18347.boi.hp.com> From: Jerry Loyd To: "'csci397c-08@wombat.ecst.csuchico.edu'" Subject: JBuilder and installing beans Date: Wed, 4 Mar 1998 17:46:20 -0800 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 780 I found the problem, and it may be of interest to everyone. JBuilder was not able to use a bean that has not specified a 'package' = name. To get the Core Java Book "RangeBean" sample to work, I added a 'dummy' = package name to the two .java files making it up, recompiled, and then = put them into a .jar file. When I installed the .jar file into = JBuilder, the components showed up as 'dummy.RangeBean' and = 'dummy.IntTxtFld' (or whatever it was...) When I dragged-and-dropped the bean onto a panel, Jbuilder added the = following line of code to my source file: import dummy.*; This compiled and ran just fine. So, to ensure that at least *one* of the major Graphical IDE's can use = your bean, be sure to define a package name for it. Jerry Loyd From jeantt@sr.hp.com Thu Mar 05 23:12:36 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 7781 invoked from network); 5 Mar 1998 15:12:35 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 5 Mar 1998 23:12:35 -0000 Received: (qmail 28703 invoked by uid 1052); 5 Mar 1998 15:12:35 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 28698 invoked from network); 5 Mar 1998 15:12:33 -0800 Received: from palrel3.hp.com (156.153.255.226) by pitbull.ecst.csuchico.edu with SMTP; 5 Mar 1998 23:12:33 -0000 Received: from srmail.sr.hp.com (srmail.sr.hp.com [15.4.45.14]) by palrel3.hp.com (8.8.5/8.8.5tis) with ESMTP id PAA05321 for ; Thu, 5 Mar 1998 15:11:31 -0800 (PST) Received: from tmbrwolf.sr.hp.com by srmail.sr.hp.com with ESMTP (1.37.109.16/15.5+ECS 3.3) id AA022429489; Thu, 5 Mar 1998 15:11:29 -0800 Received: (from jeantt@localhost) by tmbrwolf.sr.hp.com (8.7.6/8.7.3 TIS 5.0) id PAA15200; Thu, 5 Mar 1998 15:11:23 -0800 (PST) From: Jean Tillinghast Message-Id: <199803052311.PAA15200@tmbrwolf.sr.hp.com> Subject: Mtn View Java Users' Group: "Class Loaders" (fwd) To: suehyun_chung@tmbrwolf.sr.hp.com, joann_l_wright-fisher@tmbrwolf.sr.hp.com, andrew_baensch@tmbrwolf.sr.hp.com, marco_smoorenburg@tmbrwolf.sr.hp.com, michal_odyniec@tmbrwolf.sr.hp.com, jacque_donahue@tmbrwolf.sr.hp.com, debbie_strathman@tmbrwolf.sr.hp.com, dan_pengra@tmbrwolf.sr.hp.com, laurelee_scholes@tmbrwolf.sr.hp.com, tim_l_bagwell@tmbrwolf.sr.hp.com, john_blyth@tmbrwolf.sr.hp.com, joyjeet_bhowmik@tmbrwolf.sr.hp.com, paul_rodriguez@tmbrwolf.sr.hp.com, david_bailey@tmbrwolf.sr.hp.com, TEJPAL_THANJAL@Non-HP-UnitedKingdom-om9.om.hp.com, joydip_das@tmbrwolf.sr.hp.com, gerald@hpbbse.bbn.hp.com, jimsingh@tmbrwolf.sr.hp.com (Jim Singh), michal_krombholz@tmbrwolf.sr.hp.com, dan_liszewski@hp-littlefalls-om1.om.hp.com, fidel_amezcua@tmbrwolf.sr.hp.com, chris_muntzer@tmbrwolf.sr.hp.com, leon_spencer@tmbrwolf.sr.hp.com, waynec@tmbrwolf.sr.hp.com (Wayne Cannon), rkoo@tmbrwolf.sr.hp.com (Ron Koo), pape@tmbrwolf.sr.hp.com (Jeff Pape), dsd@tmbrwolf.sr.hp.com (Donald St.Denis), mike_mcclendon@tmbrwolf.sr.hp.com, tony_beardsley@tmbrwolf.sr.hp.com, brianr@tmbrwolf.sr.hp.com (Brian Rushka), cherie@tmbrwolf.sr.hp.com (Cherie Gannon-Taylor), achung@tmbrwolf.sr.hp.com (Ann Chung), fraley@cup.hp.com, webmaster@tmbrwolf.sr.hp.com, paulc@tmbrwolf.sr.hp.com (Paul Chandler), hopcraft@tmbrwolf.sr.hp.com (Geoffrey Hopcraft) Date: Thu, 5 Mar 1998 15:11:22 -0800 (PST) Cc: amk@ecst.csuchico.edu (anne keunke) X-Mailer: ELM [version 2.4 PL25] Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Status: RO Content-Length: 14396 This sounds like an interesting idea (and Anne talked about it today in class). Thanks Wayne! jean > > Notes from the 25 Feb 98 Mountain View Java Users' Group (MTVJUG): > > The speaker is Bill Venners of the Artima Software Company talking > about Java ""class loaders". > > [These notes are necessarily terse, but you will get an idea of what > was discussed and basically how to do some of the operations.] > > Administrative preamble stuff: > > March: no meeting. > April: Understanding Java 1.2, Bruce Eckel > May: Beans Tutorial, Mark Johnson > June: No speaker. Bring your favorite Java program, bean, etc. > > ----------------------------- > Bill Venners, Artima Software Company, consultant, author, and trainer. > > His Artima Web site http://www.artima.com/ has quite a number of > excellent examples and tutorial pieces. It is well worth visiting. > It includes his PowerPoint slides and example code demonstrating how > to write a "class loader". A "zip" file is attached, or you can > access them for a while from > http://web.sr.hp.com/~waynec/ClassLoaders.zip. > > Bill asked how many have written a "class loader". About 8 people > (10-15% of the group) responded. > > "Class loaders" allow dynamic extension, loading at run-time, types to > load and use. The type (class) names are given as strings. There are > two ways: > 1) use the forName() function, and > 2) use a custom "class loader". > > For example: Loading an applet under a Web browser. > 1) Load a class using the "primordial" (or System) "class loader" > that is part of the JVM. > 2) Use "class loader" objects, or custom ""class loaders", that > are part of an application > > Why have a custom "class loader"? > - To load class definitions from a place other than Java's normal > CLASSPATH, such as from a custom directory, from a database, over the > network, etc. > - To perform some custom name modification, such as appending or > prepending something to the name provided, or assuring that the name > meets some custom criteria before looking for the class definition. > - To provide custom exception handling, including looking in > alternate locations if the class definition isn't found immediately. > - To provide an additional "name space" layer for security > purposes -- see below. > - Etc., etc., etc. > > Important: Each loader has its own "name space". > > The name space used at load time and at run time is "name space" of the > "class loader" that loaded the object. All class names are unique > within a "name space". Class names do not have to be unique across > "name spaces". For example [using an outline to describe a class > hierarchy where an animal is an object, and both cat and mouse are > animals]: > > java.lang.Object > Animal > Cat > Mouse > > java.lang.Object > Device > Keyboard > Mouse > > Note that the two "Mouse" classes are different classes--one is a > rodent and the other is a device attached to your computer. Both can > exist in the same program at the same time, but in different "name > spaces" -- i.e., if they are loaded by different ""class loaders". The > "class loader" and the "name space" have a one-to-one (1:1) > relationship. The same loader's "name space" is used as for the > referencING object. > > "Name spaces" are important for: > 1) Dealing with name conflicts (especially when loading code > written by a different developer, such as when a program (such as the > initial Java program launched by a Web browser) loads your applet. > Your applet does not have to avoid the class names used in the initial > program. > 2) Shielding untrusted code. By running untrusted code in a > different "name space", it is prohibited from overriding the > fundamental library classes and allowing it illegal access. > > Sunsoft's JVM book has a very good reference on ""class loaders". > > We will create a new NetworkClassLoader class based on the system's > java.lang.ClassLoader class, and use an instance of our new > NetworkClassLoader to load a new class into the system. > > java.lang.Object > java.lang.ClassLoader > NetworkClassLoader > Device > Keyboard > Mouse > Animal > Cat > Rodent > Mouse > > For the purpose of this example, we will assume that the classes > Device, Keyboard, Mouse, Animal, Cat, and Rodent are loaded normally, > i.e., by the primordial "class loader", so their class names are in > its "name space", that is, the program's main "name space". Now an > instance of Cat wants to load a new, and unknown type of Rodent to play > with. It will read the name of the new Rodent subclass/type from > somewhere into a String. > > An important concept that is the same as Smalltalk but different from > C++ is that Java has run-time class information. Every class > definition exists in the system at run-time as an instance of the > class "Class". > > main() > { > NetworkClassLoader ncl = new NetworkClassLoader(); > // ncl is now a net "class loader", and therefore we have created > // a new "name space". > > Class c = ncl.loadClass(args[0], true); > // args[0] is, unlike C & C++, the first argument on the command > line, > // which is, in this case, the name of the new class -- > "Mouse" -- > // or any other new class. > // loadClass() has now created a new instance, c, of class "Class" > // (java.lang.Class) by loading the definition of the Mouse > // class into the system. Instance "c" is the Mouse class > // definition, but we simply don't know its name here, at > // compile time. > // The second argument, "true", tells loadClass() that the new > class > // is to be fully "resolved" (the final phase of the > initialization > // process. More on this "resolveIt" parameter later. > // java.lang.Class allows you to getInfo(), create a > newInstance(), and > // use reflection. > > Object o = c.newInstance(); > // o is a generic Object-class reference to a Mouse-class > instance, "c". > // However, here at compile time, we don't know what class > this > // instance will be, so newInstance() returns an Object-class > // reference. > > Rodent myToy = (Rodent)o; > // Cast the generic Object-class instance, "o", into something > that we > // know something about, i.e., Rodent-class. Remember, here > at > // compile-time, we know nothing about Mouse, only Rodent. > In fact, > // the next time the program is run, the parameter passed on > the > // command line might be "Mole" or "Squirrel", and therefore > those > // will be the classes loaded and myToy will be an instance of > // those classes. > > myToy.makeNoise(); // Methods from the Rodent-class' interface. > myToy.run(); // that we know about at compile time. > // etc. > } > > > --------------------------- > Now, about ""class loaders" and "name spaces": > > "ncl" loads the class "Rodent" by referencing it (i.e., in the > "implements" definition of "Mouse" class). It doesn't exist in its > own "name space", so it asks the loader that loaded NetworkClassLoader > (the primordial loader, in this case). The primordial "class loader" > knows about Rodent and loads it, and it returns the Rodent definition > back to the NetworkClassLoader. The Rodent class winds up in BOTH > "name spaces" (that of the primordial loader, and that of "ncl"). > > > --------------------------- > Now a more detailed example, called Greeter, of the actual "class > loader" code, including the implementation of the loadClass() method: > > Greeter is a kind of fancy "Hello World!" that has multiple greetings > based on generating instances of dynamically loaded classes (each with > its own greeting style) that are selectively loaded based on a > command-line parameter. It consists of the Greeter interface, which > is known at compile time, and an extensible set of dynamically loaded > subclasses that are specified by the command line at run-time. > > public interface Greeter { > void greet(); > } > > For example, here are a couple of the classes that will be selected and > dynamically loaded: > > public class Hello implements Greeter { > public void greet() { > System.out.println("Hello, world!"); > } > } > > public class Greetings implements Greeter { > public void greet() { > System.out.println("Greetings, planet!"); > } > } > > Plus, there are classes that randomly select between messages or that > give you an appropriate message for the time of day. > > public class GreeterClassLoader extends ClassLoader > { > public synchronized Class loadClass(String className, boolean > resolveIt) > throws ClassNotFoundException > { > Class result; > byte classData[]; > > // etc. ... > } > } > > > > Every "class loader" must do the following seven (7) things: > > 1) Whenever you load the same class as before, you must return the SAME > class instance. I do this by attempting to look up the class. If I > am successful, I return the class I found. > result = findLoadedClass(className); > if (result != null) > return result; > 2) Give the primordial loader a chance. > try > { result = findSystemClass(className); > return result; > } > catch (ClassNotFoundException) > { // "catch clause" just falls through > } > 3) Disallow insertion of anything into java.* for security. > if (className.startsWith("java.") > // ... > 4) Attempt to load class in your custom way, i.e., get bytes > Note that the class is loaded from the input stream into a > byte array. > 5) Import type (class) and its superclasses (if any) > defineClass(...) > 6) Initialize any superclasses and the type > resolveClass(...) > The boolean parameter in the loadClass() method determines > whether or not the resolveClass() function gets called. In some > cases, while in the process of loading a class, another class needs to > be loaded simply to verify its existence and its interface. These > classes are "loaded", but not "resolved". They are not resolved until > they are actually referenced in the code. > 7) Return reference to the new class instance > > > > ---------------------- > Here is the actual code for the GreeterClassLoader class: > > import java.io.*; > import java.util.Hashtable; > > public class GreeterClassLoader extends ClassLoader { > > // basePath gives the path to which this class > // loader appends "/.class" to get the > // full path name of the class file to load > private String basePath; > > public GreeterClassLoader(String basePath) { > > this.basePath = basePath; > } > > public synchronized Class loadClass(String className, > boolean resolveIt) throws ClassNotFoundException { > > Class result; > byte classData[]; > > // Check the local cache > // Step 1) above. > result = findLoadedClass(className); > if (result != null) { > // Return a cached class > return result; > } > > // Check with the primordial "class loader" > // Step 2) above. > try { > result = findSystemClass(className); > // Return a system class > return result; > } > catch (ClassNotFoundException e) { > } > > // Don't attempt to load a system file except through > // the primordial "class loader" > // Step 3) above > if (className.startsWith("java.")) { > throw new ClassNotFoundException(); > } > > // Try to load it from the basePath directory. > // Step 4) above > classData = getTypeFromBasePath(className); > if (classData == null) { > System.out.println("GCL - Can't load class: " > + className); > throw new ClassNotFoundException(); > } > > // Parse it > // Step 5) above > result = defineClass(className, classData, 0, > classData.length); > if (result == null) { > System.out.println("GCL - Class format error: " > + className); > throw new ClassFormatError(); > } > > // Step 6) above > if (resolveIt) { > resolveClass(result); > } > > // Return class from basePath directory > // Step 7) above > return result; > } > > private byte[] getTypeFromBasePath(String className) { > > InputStream in = null; > String fileName = basePath + "/" + className + ".class"; > > try { > in = new FileInputStream(fileName); > } catch (FileNotFoundException e) { > return null; > } > > ByteArrayOutputStream out = new ByteArrayOutputStream(); > > try { > int c = in.read(); > while (c != -1) { > out.write(c); > c = in.read(); > } > } > catch (IOException e) { > System.out.println("GCL: Error reading bytes of:" > + className); > e.printStackTrace(); > return null; > } > > return out.toByteArray(); > } > } > > --openmail-part-0096665e-00000001 > > --openmail-part-0096665e-00000001-- > > -- Jean Tillinghast (707) 577-3655 or beeper# 325-6681 fax: (707) 577-2036 email jeantt@sr.hp.com From jeantt@sr.hp.com Thu Mar 05 23:27:03 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 10351 invoked from network); 5 Mar 1998 15:27:02 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 5 Mar 1998 23:27:02 -0000 Received: (qmail 1309 invoked by uid 1052); 5 Mar 1998 15:27:02 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 1305 invoked from network); 5 Mar 1998 15:27:00 -0800 Received: from palrel3.hp.com (156.153.255.226) by pitbull.ecst.csuchico.edu with SMTP; 5 Mar 1998 23:27:00 -0000 Received: from srmail.sr.hp.com (srmail.sr.hp.com [15.4.45.14]) by palrel3.hp.com (8.8.5/8.8.5tis) with ESMTP id PAA10704 for ; Thu, 5 Mar 1998 15:26:58 -0800 (PST) Received: from tmbrwolf.sr.hp.com by srmail.sr.hp.com with ESMTP (1.37.109.16/15.5+ECS 3.3) id AA029220416; Thu, 5 Mar 1998 15:26:56 -0800 Received: (from jeantt@localhost) by tmbrwolf.sr.hp.com (8.7.6/8.7.3 TIS 5.0) id PAA15769; Thu, 5 Mar 1998 15:26:50 -0800 (PST) From: Jean Tillinghast Message-Id: <199803052326.PAA15769@tmbrwolf.sr.hp.com> Subject: Cupertino Java SIG (Feb 25) To: suehyun_chung@tmbrwolf.sr.hp.com, joann_l_wright-fisher@tmbrwolf.sr.hp.com, andrew_baensch@tmbrwolf.sr.hp.com, marco_smoorenburg@tmbrwolf.sr.hp.com, michal_odyniec@tmbrwolf.sr.hp.com, jacque_donahue@tmbrwolf.sr.hp.com, debbie_strathman@tmbrwolf.sr.hp.com, dan_pengra@tmbrwolf.sr.hp.com, laurelee_scholes@tmbrwolf.sr.hp.com, tim_l_bagwell@tmbrwolf.sr.hp.com, john_blyth@tmbrwolf.sr.hp.com, joyjeet_bhowmik@tmbrwolf.sr.hp.com, paul_rodriguez@tmbrwolf.sr.hp.com, david_bailey@tmbrwolf.sr.hp.com, TEJPAL_THANJAL@Non-HP-UnitedKingdom-om9.om.hp.com, joydip_das@tmbrwolf.sr.hp.com, gerald@hpbbse.bbn.hp.com, jimsingh@tmbrwolf.sr.hp.com (Jim Singh), michal_krombholz@tmbrwolf.sr.hp.com, dan_liszewski@hp-littlefalls-om1.om.hp.com, fidel_amezcua@tmbrwolf.sr.hp.com, chris_muntzer@tmbrwolf.sr.hp.com, leon_spencer@tmbrwolf.sr.hp.com, waynec@tmbrwolf.sr.hp.com (Wayne Cannon), rkoo@tmbrwolf.sr.hp.com (Ron Koo), pape@tmbrwolf.sr.hp.com (Jeff Pape), dsd@tmbrwolf.sr.hp.com (Donald St.Denis), mike_mcclendon@tmbrwolf.sr.hp.com, tony_beardsley@tmbrwolf.sr.hp.com, brianr@tmbrwolf.sr.hp.com (Brian Rushka), cherie@tmbrwolf.sr.hp.com (Cherie Gannon-Taylor), achung@tmbrwolf.sr.hp.com (Ann Chung), fraley@cup.hp.com, webmaster@tmbrwolf.sr.hp.com, paulc@tmbrwolf.sr.hp.com (Paul Chandler), hopcraft@tmbrwolf.sr.hp.com (Geoffrey Hopcraft) Date: Thu, 5 Mar 1998 15:26:49 -0800 (PST) Cc: amk@ecst.csuchico.edu (anne keunke) X-Mailer: ELM [version 2.4 PL25] Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Status: RO Content-Length: 8549 Here is some more interesting information. Wayne does a wonderful job of trying to transcribe notes from the meetings. However, if you want to get the whole thing...just let me know and you can phone in and hear it first hand. jean -- Jean Tillinghast (707) 577-3655 or beeper# 325-6681 fax: (707) 577-2036 email jeantt@sr.hp.com http://www.suntest.com/100percent/cpd/doc/tools/jpc.html If you are writing Java programs that you hope will ... you will want to do a JavaPureCheck. It reads your programming looking for hard-coded file names, mixing event models (), using classes out of the Sun libraries (change from release to release and are dangerous), ingesting classes into a system package. There is a frequently used little Java idom that hides exceptions: try { ... } catch {} Instead, let error bubble up to the top where they can get reported to the users and ultimately fixed. This may be ok for throw-away code. Can do concurrent test engineering. Can review test interface, can review for testability, can add some methods, for example, to objects that are mostly write-only interfaces to allow you to get at the data for testing. Do decent engineering. Think about your interfaces up front and stabilize them. Build your tests up front. You will change your interfaces, and you will have to change your tests. You don't know everything when you start. ... Don't write one giant test method that tests all of the fields of an object, but instead write multiple small objects so your changes are more contained. Strong type checking is handy when you are changing type definitions, because it will catch errors. Write durable tests. Make your tests durability across revisions. Does everyone use SetName on your AWT components -- if not your components will not be internationalizable. It will also make your tests more durable. Record your interface using an English language interface and play your test back using the French version. That is an example of a durable test across internationalization. Parameterize your tests. Instead of hard coding, ... For example, if your program gets data from a file, send in the information to the test as a parameter -- send this "Fred" and see if "Fred" is displayed, sent this "John" and see of "John" is displayed. The 100% Pure Java program is intended to help people write Java programs that run everywhere. It can and does check for compliance with the ideal, to see if you have "intentionally" wired your program to a particular platform. 100% Pure (JavaPureCheck) advises you of such things. Testing is representative of the user. If you didn't write once and test everywhere, you would be able to "run" everywhere. "Running" is, in effect, testing. If you don't test everywhere, you aren't supporting your customers who are running from everywhere. They have a lot of ideas, but they don't know if they can make money off of it. They are trying to make some money. They are spengin more money than they are making, but they are striving to make money. Threads: You can't test threads. You have to think them out. How can you test for race conditions or deadlocks? You can probably test for deadlocks, but it isn't easy. A good reference is "Concurrent Programming in Java" from the Addison Wesley series. Don't tell anyone, but they are working on something. They think they can do enough analysis of your program to be able to tell you that there is a possible race condition or a possible deadlock issue. Are you familiar with the waterfall model? Good luck. That model is outmoded. Consider the spiral model with continued feedback with the customer and there is continued refinement. "Spiral QA" incorporates QA into that spiral development model. Plan for test revisiions, incorporate QA and test people into your cycle, incorporate test development people into your team and into your spiral cycle. This allows you to get to the customer quicker because you have been doing QA all along. By incorporating quality assurance all along, you will catch problems earlier and will minimize the number of big changes that are caused by not finding out about problems until the very end that have a significant structural impact. It also give QA an opportunity to educate the designers about what are or are not good programming practices. Re: Beta testing: I'm ambivalent. My professional pride makes my skin crawl, however. Don't we care enough about the user to test it more thoroughly before it goes to market. However, until the customer really tries it, you will never know if you really understood the customers' requirements. It works better for Microsoft than it does for Joe and Betty in the garage, because they are innovators. This extended Beta is good for innovators, but at the same time, extended beta works against innovators by not allowing them to get their innovative product to market sooner. Regressions tests are very important to avoid re-incorporating the same errors again. Four kinds of program testers: Program checkers (like type-checking compilers, lint, JavaPureCheck, etc.) are the very best kind of testing because it catches things earlier, is comparatively painless, and is relatively certain because you get 100% coverage. Testing is essentially statistical sampling, because you can't test everything. Test Generators -- things that help to spit out a test. They perform the test, get the results back, and perform some checking between what was received back and what was predicted to be return. When you are testing, don't get stuck on the predicate "equal" (==). Often, other predicates are more meaningful or less expensive than testing for equal. For example, when testing floating point results, you want to test for a range and not for equals. Test Execution Frameworks -- Often just gather results, but some will actually associate tests with particular sections of source code that have changed. Test Design Tools -- will analyze the code and help you to create tests. Test Measurement Tools -- such as coverage tests determine how good a job of testing you have done. Test Automation: Tools are automation. It is good and bad. It is good because it legislates what is done and results in better repeatability and more consistent results. You get better leverage because there is one button that says "Do this test", or "Do all theses tests", as opposed to having someone manually trying do the same thing all the time, or in trying to remember what you did to repeat a bug. Test automation makes it easier to . Disadvantages because it takes longer to get the results because you have to configure the tools. Sometimes you are further away from the bug because you have more between you and the bug. The initial cost to build the framework. There is the cost of the test system and the learning curve for using it. Test tools are automation, but not oracle. If you are not investing very much in testing, then you are better off with manual testing because you won't get over the hump to automate testing. If you can afford to spend more up front, then you will get a better return on your investment after the investment. Explicit Plug for Sun's Test Products: JavaStar for Java is a lot like Xrunner, except that it is in Java. Since it is in Java, you can modify the source to include loops or other automation. You have access to all of the fields and all of the methods, unlike other systems where the test system doesn't know about the implementation object. JavaSpec is for unit or API testing if you have a library, etc. It allows you to build method by method with a kind of precondition/postcondition kind of specification -- e.g., setup code, assertions, etc. JavaScope is our coverage analysis. It works by rewriting your source to insert coverage metering code that report back to the JavaScope coverage database. The other way to get this kind of information is to instrument the virtual machine. The JavaScope has some disadvantages in that you have to perturb your code and that timing information isn't available. Advantage is that it will work on any virtual machine. It generates branch coverage counts, but not timing. Quantify for Java runs on the Microsoft VM. JavaLoad is in beta now, is written in Java, and will be announced at JavaONE. JavaSpec How do you test your Test Tools? We use our test tools to test our test tools, and they achieve about 60-70% statement coverage, but he doesn't know for certain. From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Fri Mar 06 08:20:11 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 29046 invoked from network); 6 Mar 1998 00:20:07 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 6 Mar 1998 08:20:07 -0000 Received: (qmail 22573 invoked by uid 1052); 6 Mar 1998 00:20:06 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 22533 invoked from network); 6 Mar 1998 00:19:59 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 6 Mar 1998 08:19:59 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id AAA08482 for CSCI397C-08-L; Fri, 6 Mar 1998 00:19:57 -0800 (PST) Received: from pitbull.ecst.csuchico.edu (pitbull.ecst.csuchico.edu [132.241.3.10]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with SMTP id AAA08477 for ; Fri, 6 Mar 1998 00:19:48 -0800 (PST) Received: (qmail 22496 invoked from network); 6 Mar 1998 00:19:45 -0800 Received: from pmdyn105.dip.csuchico.edu (HELO ecst.csuchico.edu) (132.241.248.105) by pitbull.ecst.csuchico.edu with SMTP; 6 Mar 1998 08:19:45 -0000 Message-ID: <34FFB3B7.155883A6@ecst.csuchico.edu> Date: Fri, 06 Mar 1998 00:28:39 -0800 From: Wing Keong Loo X-Mailer: Mozilla 4.04 [en] (Win95; I) MIME-Version: 1.0 To: csci397c-08@wombat.ecst.csuchico.edu, nhnguye@pacbell.com, wang@hpprsd1.sc.hp.com, jeantt@sr.hp.com, george.greene@tandem.com, greenejv@us.ibm.com, ron.su@tandem.com, Marcia_Paulson@hp.com, RicketsC@AV8BMX.chinalake.navy.mil, pam.ross@sunmail.chinalake.navy.mil, brianm@hprrc725.rose.hp.com, trungn@hp-vcd.vcd.hp.com, jimd@center.uscs.com, holly.hayes@bently.com, jloyd@hpbs972.boi.hp.com, tina@ndti.net, craigm@llnl.gov, wayne_cannon@hp.com, wcannon@wco.com, dcarter@us.ibm.com, veasna@cv.hp.com, david_paulson@hp.com, spuds@mackenzie.gardnerville.nv.us, anne.mackenzie@bently.com, thiha@us.ibm.com, achung@sr.hp.com, jim.steele@bently.com, fung_wilson@tandem.com, wschia@ecst.csuchico.edu, ron_garback@mlngw.chinalake.navy.mil Subject: Some BDK BeanBox tips. Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 704 Hi people, Thought I'd share some tips with those who are/will be playing with BDK BeanBox so that you won't have to lose too much hair. 1. If you are making a bean and want to see the changes made to it, it seems you have to restart beanbox to reload the jar or the changes won't show. 2. If you are using other packages in your bean such as Swing 1.0.1, make sure the beanbox invocation environment has the correct classpath to the package. In my version of BDK(Feb 98), the beanbox is started through a batch file, run.bat. It wipes out your default CLASSPATH so you will have to modify the file to include the current %CLASSPATH% if you have anything in your bean that requires it. Wing Keong. From jloyd@hpbs972.boi.hp.com Tue Mar 10 01:46:24 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 21054 invoked from network); 9 Mar 1998 17:46:24 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 10 Mar 1998 01:46:24 -0000 Received: (qmail 23671 invoked by uid 1052); 9 Mar 1998 17:46:23 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 23663 invoked from network); 9 Mar 1998 17:46:22 -0800 Received: from palrel3.hp.com (156.153.255.226) by pitbull.ecst.csuchico.edu with SMTP; 10 Mar 1998 01:46:22 -0000 Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel3.hp.com (8.8.5/8.8.5tis) with SMTP id RAA23736; Mon, 9 Mar 1998 17:46:21 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA12009; Mon, 9 Mar 1998 18:49:50 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD4B8B.A6E36660@hpb18347.boi.hp.com>; Mon, 9 Mar 1998 18:46:20 -0700 Message-Id: <01BD4B8B.A6E36660@hpb18347.boi.hp.com> From: Jerry Loyd To: "'Anne M. Keuneke'" , "csci397c-08@wombat.ecst.csuchico.edu" , "nhnguye@pacbell.com" , "wang@hpprsd1.sc.hp.com" , "jeantt@sr.hp.com" , "george.greene@tandem.com" To: "greenejv@us.ibm.com" , "ron.su@tandem.com" , "Marcia_Paulson@hp.com" , "RicketsC@AV8BMX.chinalake.navy.mil" , "pam.ross@sunmail.chinalake.navy.mil" , "brianm@hprrc725.rose.hp.com" To: "trungn@hp-vcd.vcd.hp.com" , "jimd@center.uscs.com" , "holly.hayes@bently.com" , "jloyd@hpbs972.boi.hp.com" , "tina@ndti.net" , "craigm@llnl.gov" To: "wayne_cannon@hp.com" , "wcannon@wco.com" , "dcarter@us.ibm.com" , "veasna@cv.hp.com" , "david_paulson@hp.com" , "spuds@mackenzie.gardnerville.nv.us" To: "anne.mackenzie@bently.com" , "thiha@us.ibm.com" , "achung@sr.hp.com" , "jim.steele@bently.com" , "fung_wilson@tandem.com" , "wschia@ecst.csuchico.edu" To: "ron_garback@mlngw.chinalake.navy.mil" Subject: BeanBox error message / help Date: Mon, 9 Mar 1998 18:49:52 -0700 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Status: RO Content-Length: 605 I have created a simple bean that includes an Image. Thanks to Wang = Keong, I got it working, even as a Bean, at least in Jbuilder. Now I'm = trying to get it to work in the Bean Box. I'm able to "load" the jar = file, but when I click on the new entry, I get the following message: java.lang.SecurityException: No access through getResource() to .class = in 1.1 I do use a getSystemResource() call, that if I comment it out, the error = goes away. But then, the program does nothing of any value... Would anybody have an idea on how to work around this problem? Thanks in advance, Jerry Loyd From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Tue Mar 10 12:51:51 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 17341 invoked from network); 10 Mar 1998 04:51:45 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 10 Mar 1998 12:51:45 -0000 Received: (qmail 2514 invoked by uid 1052); 10 Mar 1998 04:51:41 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 2474 invoked from network); 10 Mar 1998 04:51:31 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 10 Mar 1998 12:51:31 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id EAA12031 for CSCI397C-08-L; Tue, 10 Mar 1998 04:51:29 -0800 (PST) Received: from Tandem.com (suntan.tandem.com [192.216.221.8]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id EAA12026 for ; Tue, 10 Mar 1998 04:51:14 -0800 (PST) Received: from adm.loc1.tandem.com (adm.loc1.tandem.com [155.186.172.56]) by Tandem.com (8.8.8/2.0.1) with SMTP id DAA09759; Tue, 10 Mar 1998 03:57:45 -0800 (PST) Received: from ronsu-nt by adm.loc1.tandem.com (SMI-8.6/6main.940209) id LAA22934; Tue, 10 Mar 1998 11:57:44 GMT Received: by localhost with Microsoft MAPI; Tue, 10 Mar 1998 03:57:42 -0800 Message-ID: From: Ron Su Reply-To: "ron.su@tandem.com" To: "'wayne_cannon@hp.com'" , "csci397c-08@wombat.ecst.csuchico.edu" , "nhnguye@pacbell.com" , "wang@hpprsd1.sc.hp.com" , "jeantt@sr.hp.com" , "Greene, George" To: "greenejv@us.ibm.com" , "Su, Ron H" , "Marcia_Paulson@hp.com" , "RicketsC@AV8BMX.chinalake.navy.mil" , "pam.ross@sunmail.chinalake.navy.mil" , "brianm@hprrc725.rose.hp.com" To: "trungn@hp-vcd.vcd.hp.com" , "jimd@center.uscs.com" , "holly.hayes@bently.com" , "jloyd@hpbs972.boi.hp.com" , "tina@ndti.net" , "craigm@llnl.gov" To: "wcannon@wco.com" , "dcarter@us.ibm.com" , "veasna@cv.hp.com" , "david_paulson@hp.com" , "spuds@mackenzie.gardnerville.nv.us" , "anne.mackenzie@bently.com" To: "thiha@us.ibm.com" , "achung@sr.hp.com" , "jim.steele@bently.com" , "Fung, Wilson" , "wschia@ecst.csuchico.edu" , "ron_garback@mlngw.chinalake.navy.mil" Cc: "Su, Ron H" Subject: RE: Design Tools (Together/J) Date: Tue, 10 Mar 1998 03:57:47 -0800 Organization: Tandem Computers X-Mailer: Microsoft Internet E-mail/MAPI - 8.0.0.4211 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 1614 Hi all, Sorry, I do not have any experience with Together/J. However, using Java, I have written an InsideObject Graph Tool that should let you draw, save, and print the OM diagram through reverse engineering (it looks for Java classes and draws them in their OM notations). You can go to http://jausa.hypermart.net/InsideObject.html to get the latest trial version. Ron -----Original Message----- From: Wayne Cannon [SMTP:waynec@sr.hp.com] Sent: Monday, March 09, 1998 5:03 PM Subject: Design Tools (Together/J) It provides a tool for doing Object Models, generating Java Code as the result. It can also load from .java or .class files (reverse engineers) dynamically (not batch) in order to keep your Object Model and code in sync. It displays the graphical Object Model, the Java code, a multi-purpose Inspector/Property Editor (e.g., for describing variables and methods, adding javadoc-compatible comments, etc.) in optional panes of their project browser (my term). In addition to the Object Model, Together/J supports other design which I haven't tried yet, including use-cases, sequence diagrams, and state diagrams. In addition to printed hard-copy, Together/J generates HTML documentation which should make Anne happy. Unfortunately, the free "Whiteboard" edition of Together/J doesn't generate anything other than what you see on the screen -- no HTML and no hard-copy! Does anyone have any significant experience with Together/J (or the C++/Delphi Together/Pro) under a heavier, real, workload to see if it continues to hold up? They have a lot of heavyweight kudos on their Web page. From James_Kreth@uscs.com Wed Mar 04 01:35:55 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 17158 invoked from network); 3 Mar 1998 14:24:13 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 3 Mar 1998 22:24:13 -0000 Received: (qmail 831 invoked by uid 1052); 3 Mar 1998 12:29:08 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 25131 invoked from network); 3 Mar 1998 11:09:28 -0800 Received: from mxsuncenter.uscs.com (165.79.16.81) by pitbull.ecst.csuchico.edu with SMTP; 3 Mar 1998 19:09:28 -0000 Received: by mxsuncenter.uscs.com with SMTP (Microsoft Exchange Server Internet Mail Connector Version 4.0.995.52) id <01BD4692.2FC39BC0@mxsuncenter.uscs.com>; Tue, 3 Mar 1998 10:50:31 -0800 Message-ID: From: "Kreth, James" To: "'Keuneke, Anne'" Subject: Free Whiteboard of Together/J (Peter Coad's Java Modeling Tool) Date: Tue, 3 Mar 1998 10:50:32 -0800 X-Mailer: Microsoft Exchange Server Internet Mail Connector Version 4.0.995.52 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Status: RO Content-Length: 403 Anne, I recently attended the Software Development conference in SF. In a class from Peter Coad, he gave the following link to download a fully functional evaluation or "Whiteboard" edition of his "Together/J" Object Modeling tool. This tool is WRITTEN in Java as well. It can be downloaded from: http://www.oi.com/togetherj.htm Jim Kreth International Billing Services james_kreth@billing.com From jeantt@sr.hp.com Thu Mar 05 23:12:36 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 7781 invoked from network); 5 Mar 1998 15:12:35 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 5 Mar 1998 23:12:35 -0000 Received: (qmail 28703 invoked by uid 1052); 5 Mar 1998 15:12:35 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 28698 invoked from network); 5 Mar 1998 15:12:33 -0800 Received: from palrel3.hp.com (156.153.255.226) by pitbull.ecst.csuchico.edu with SMTP; 5 Mar 1998 23:12:33 -0000 Received: from srmail.sr.hp.com (srmail.sr.hp.com [15.4.45.14]) by palrel3.hp.com (8.8.5/8.8.5tis) with ESMTP id PAA05321 for ; Thu, 5 Mar 1998 15:11:31 -0800 (PST) Received: from tmbrwolf.sr.hp.com by srmail.sr.hp.com with ESMTP (1.37.109.16/15.5+ECS 3.3) id AA022429489; Thu, 5 Mar 1998 15:11:29 -0800 Received: (from jeantt@localhost) by tmbrwolf.sr.hp.com (8.7.6/8.7.3 TIS 5.0) id PAA15200; Thu, 5 Mar 1998 15:11:23 -0800 (PST) From: Jean Tillinghast Message-Id: <199803052311.PAA15200@tmbrwolf.sr.hp.com> Subject: Mtn View Java Users' Group: "Class Loaders" (fwd) To: suehyun_chung@tmbrwolf.sr.hp.com, joann_l_wright-fisher@tmbrwolf.sr.hp.com, andrew_baensch@tmbrwolf.sr.hp.com, marco_smoorenburg@tmbrwolf.sr.hp.com, michal_odyniec@tmbrwolf.sr.hp.com, jacque_donahue@tmbrwolf.sr.hp.com, debbie_strathman@tmbrwolf.sr.hp.com, dan_pengra@tmbrwolf.sr.hp.com, laurelee_scholes@tmbrwolf.sr.hp.com, tim_l_bagwell@tmbrwolf.sr.hp.com, john_blyth@tmbrwolf.sr.hp.com, joyjeet_bhowmik@tmbrwolf.sr.hp.com, paul_rodriguez@tmbrwolf.sr.hp.com, david_bailey@tmbrwolf.sr.hp.com, TEJPAL_THANJAL@Non-HP-UnitedKingdom-om9.om.hp.com, joydip_das@tmbrwolf.sr.hp.com, gerald@hpbbse.bbn.hp.com, jimsingh@tmbrwolf.sr.hp.com (Jim Singh), michal_krombholz@tmbrwolf.sr.hp.com, dan_liszewski@hp-littlefalls-om1.om.hp.com, fidel_amezcua@tmbrwolf.sr.hp.com, chris_muntzer@tmbrwolf.sr.hp.com, leon_spencer@tmbrwolf.sr.hp.com, waynec@tmbrwolf.sr.hp.com (Wayne Cannon), rkoo@tmbrwolf.sr.hp.com (Ron Koo), pape@tmbrwolf.sr.hp.com (Jeff Pape), dsd@tmbrwolf.sr.hp.com (Donald St.Denis), mike_mcclendon@tmbrwolf.sr.hp.com, tony_beardsley@tmbrwolf.sr.hp.com, brianr@tmbrwolf.sr.hp.com (Brian Rushka), cherie@tmbrwolf.sr.hp.com (Cherie Gannon-Taylor), achung@tmbrwolf.sr.hp.com (Ann Chung), fraley@cup.hp.com, webmaster@tmbrwolf.sr.hp.com, paulc@tmbrwolf.sr.hp.com (Paul Chandler), hopcraft@tmbrwolf.sr.hp.com (Geoffrey Hopcraft) Date: Thu, 5 Mar 1998 15:11:22 -0800 (PST) Cc: amk@ecst.csuchico.edu (anne keunke) X-Mailer: ELM [version 2.4 PL25] Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Status: RO Content-Length: 14396 This sounds like an interesting idea (and Anne talked about it today in class). Thanks Wayne! jean > > Notes from the 25 Feb 98 Mountain View Java Users' Group (MTVJUG): > > The speaker is Bill Venners of the Artima Software Company talking > about Java ""class loaders". > > [These notes are necessarily terse, but you will get an idea of what > was discussed and basically how to do some of the operations.] > > Administrative preamble stuff: > > March: no meeting. > April: Understanding Java 1.2, Bruce Eckel > May: Beans Tutorial, Mark Johnson > June: No speaker. Bring your favorite Java program, bean, etc. > > ----------------------------- > Bill Venners, Artima Software Company, consultant, author, and trainer. > > His Artima Web site http://www.artima.com/ has quite a number of > excellent examples and tutorial pieces. It is well worth visiting. > It includes his PowerPoint slides and example code demonstrating how > to write a "class loader". A "zip" file is attached, or you can > access them for a while from > http://web.sr.hp.com/~waynec/ClassLoaders.zip. > > Bill asked how many have written a "class loader". About 8 people > (10-15% of the group) responded. > > "Class loaders" allow dynamic extension, loading at run-time, types to > load and use. The type (class) names are given as strings. There are > two ways: > 1) use the forName() function, and > 2) use a custom "class loader". > > For example: Loading an applet under a Web browser. > 1) Load a class using the "primordial" (or System) "class loader" > that is part of the JVM. > 2) Use "class loader" objects, or custom ""class loaders", that > are part of an application > > Why have a custom "class loader"? > - To load class definitions from a place other than Java's normal > CLASSPATH, such as from a custom directory, from a database, over the > network, etc. > - To perform some custom name modification, such as appending or > prepending something to the name provided, or assuring that the name > meets some custom criteria before looking for the class definition. > - To provide custom exception handling, including looking in > alternate locations if the class definition isn't found immediately. > - To provide an additional "name space" layer for security > purposes -- see below. > - Etc., etc., etc. > > Important: Each loader has its own "name space". > > The name space used at load time and at run time is "name space" of the > "class loader" that loaded the object. All class names are unique > within a "name space". Class names do not have to be unique across > "name spaces". For example [using an outline to describe a class > hierarchy where an animal is an object, and both cat and mouse are > animals]: > > java.lang.Object > Animal > Cat > Mouse > > java.lang.Object > Device > Keyboard > Mouse > > Note that the two "Mouse" classes are different classes--one is a > rodent and the other is a device attached to your computer. Both can > exist in the same program at the same time, but in different "name > spaces" -- i.e., if they are loaded by different ""class loaders". The > "class loader" and the "name space" have a one-to-one (1:1) > relationship. The same loader's "name space" is used as for the > referencING object. > > "Name spaces" are important for: > 1) Dealing with name conflicts (especially when loading code > written by a different developer, such as when a program (such as the > initial Java program launched by a Web browser) loads your applet. > Your applet does not have to avoid the class names used in the initial > program. > 2) Shielding untrusted code. By running untrusted code in a > different "name space", it is prohibited from overriding the > fundamental library classes and allowing it illegal access. > > Sunsoft's JVM book has a very good reference on ""class loaders". > > We will create a new NetworkClassLoader class based on the system's > java.lang.ClassLoader class, and use an instance of our new > NetworkClassLoader to load a new class into the system. > > java.lang.Object > java.lang.ClassLoader > NetworkClassLoader > Device > Keyboard > Mouse > Animal > Cat > Rodent > Mouse > > For the purpose of this example, we will assume that the classes > Device, Keyboard, Mouse, Animal, Cat, and Rodent are loaded normally, > i.e., by the primordial "class loader", so their class names are in > its "name space", that is, the program's main "name space". Now an > instance of Cat wants to load a new, and unknown type of Rodent to play > with. It will read the name of the new Rodent subclass/type from > somewhere into a String. > > An important concept that is the same as Smalltalk but different from > C++ is that Java has run-time class information. Every class > definition exists in the system at run-time as an instance of the > class "Class". > > main() > { > NetworkClassLoader ncl = new NetworkClassLoader(); > // ncl is now a net "class loader", and therefore we have created > // a new "name space". > > Class c = ncl.loadClass(args[0], true); > // args[0] is, unlike C & C++, the first argument on the command > line, > // which is, in this case, the name of the new class -- > "Mouse" -- > // or any other new class. > // loadClass() has now created a new instance, c, of class "Class" > // (java.lang.Class) by loading the definition of the Mouse > // class into the system. Instance "c" is the Mouse class > // definition, but we simply don't know its name here, at > // compile time. > // The second argument, "true", tells loadClass() that the new > class > // is to be fully "resolved" (the final phase of the > initialization > // process. More on this "resolveIt" parameter later. > // java.lang.Class allows you to getInfo(), create a > newInstance(), and > // use reflection. > > Object o = c.newInstance(); > // o is a generic Object-class reference to a Mouse-class > instance, "c". > // However, here at compile time, we don't know what class > this > // instance will be, so newInstance() returns an Object-class > // reference. > > Rodent myToy = (Rodent)o; > // Cast the generic Object-class instance, "o", into something > that we > // know something about, i.e., Rodent-class. Remember, here > at > // compile-time, we know nothing about Mouse, only Rodent. > In fact, > // the next time the program is run, the parameter passed on > the > // command line might be "Mole" or "Squirrel", and therefore > those > // will be the classes loaded and myToy will be an instance of > // those classes. > > myToy.makeNoise(); // Methods from the Rodent-class' interface. > myToy.run(); // that we know about at compile time. > // etc. > } > > > --------------------------- > Now, about ""class loaders" and "name spaces": > > "ncl" loads the class "Rodent" by referencing it (i.e., in the > "implements" definition of "Mouse" class). It doesn't exist in its > own "name space", so it asks the loader that loaded NetworkClassLoader > (the primordial loader, in this case). The primordial "class loader" > knows about Rodent and loads it, and it returns the Rodent definition > back to the NetworkClassLoader. The Rodent class winds up in BOTH > "name spaces" (that of the primordial loader, and that of "ncl"). > > > --------------------------- > Now a more detailed example, called Greeter, of the actual "class > loader" code, including the implementation of the loadClass() method: > > Greeter is a kind of fancy "Hello World!" that has multiple greetings > based on generating instances of dynamically loaded classes (each with > its own greeting style) that are selectively loaded based on a > command-line parameter. It consists of the Greeter interface, which > is known at compile time, and an extensible set of dynamically loaded > subclasses that are specified by the command line at run-time. > > public interface Greeter { > void greet(); > } > > For example, here are a couple of the classes that will be selected and > dynamically loaded: > > public class Hello implements Greeter { > public void greet() { > System.out.println("Hello, world!"); > } > } > > public class Greetings implements Greeter { > public void greet() { > System.out.println("Greetings, planet!"); > } > } > > Plus, there are classes that randomly select between messages or that > give you an appropriate message for the time of day. > > public class GreeterClassLoader extends ClassLoader > { > public synchronized Class loadClass(String className, boolean > resolveIt) > throws ClassNotFoundException > { > Class result; > byte classData[]; > > // etc. ... > } > } > > > > Every "class loader" must do the following seven (7) things: > > 1) Whenever you load the same class as before, you must return the SAME > class instance. I do this by attempting to look up the class. If I > am successful, I return the class I found. > result = findLoadedClass(className); > if (result != null) > return result; > 2) Give the primordial loader a chance. > try > { result = findSystemClass(className); > return result; > } > catch (ClassNotFoundException) > { // "catch clause" just falls through > } > 3) Disallow insertion of anything into java.* for security. > if (className.startsWith("java.") > // ... > 4) Attempt to load class in your custom way, i.e., get bytes > Note that the class is loaded from the input stream into a > byte array. > 5) Import type (class) and its superclasses (if any) > defineClass(...) > 6) Initialize any superclasses and the type > resolveClass(...) > The boolean parameter in the loadClass() method determines > whether or not the resolveClass() function gets called. In some > cases, while in the process of loading a class, another class needs to > be loaded simply to verify its existence and its interface. These > classes are "loaded", but not "resolved". They are not resolved until > they are actually referenced in the code. > 7) Return reference to the new class instance > > > > ---------------------- > Here is the actual code for the GreeterClassLoader class: > > import java.io.*; > import java.util.Hashtable; > > public class GreeterClassLoader extends ClassLoader { > > // basePath gives the path to which this class > // loader appends "/.class" to get the > // full path name of the class file to load > private String basePath; > > public GreeterClassLoader(String basePath) { > > this.basePath = basePath; > } > > public synchronized Class loadClass(String className, > boolean resolveIt) throws ClassNotFoundException { > > Class result; > byte classData[]; > > // Check the local cache > // Step 1) above. > result = findLoadedClass(className); > if (result != null) { > // Return a cached class > return result; > } > > // Check with the primordial "class loader" > // Step 2) above. > try { > result = findSystemClass(className); > // Return a system class > return result; > } > catch (ClassNotFoundException e) { > } > > // Don't attempt to load a system file except through > // the primordial "class loader" > // Step 3) above > if (className.startsWith("java.")) { > throw new ClassNotFoundException(); > } > > // Try to load it from the basePath directory. > // Step 4) above > classData = getTypeFromBasePath(className); > if (classData == null) { > System.out.println("GCL - Can't load class: " > + className); > throw new ClassNotFoundException(); > } > > // Parse it > // Step 5) above > result = defineClass(className, classData, 0, > classData.length); > if (result == null) { > System.out.println("GCL - Class format error: " > + className); > throw new ClassFormatError(); > } > > // Step 6) above > if (resolveIt) { > resolveClass(result); > } > > // Return class from basePath directory > // Step 7) above > return result; > } > > private byte[] getTypeFromBasePath(String className) { > > InputStream in = null; > String fileName = basePath + "/" + className + ".class"; > > try { > in = new FileInputStream(fileName); > } catch (FileNotFoundException e) { > return null; > } > > ByteArrayOutputStream out = new ByteArrayOutputStream(); > > try { > int c = in.read(); > while (c != -1) { > out.write(c); > c = in.read(); > } > } > catch (IOException e) { > System.out.println("GCL: Error reading bytes of:" > + className); > e.printStackTrace(); > return null; > } > > return out.toByteArray(); > } > } > > --openmail-part-0096665e-00000001 > > --openmail-part-0096665e-00000001-- > > -- Jean Tillinghast (707) 577-3655 or beeper# 325-6681 fax: (707) 577-2036 email jeantt@sr.hp.com From jeantt@sr.hp.com Thu Mar 05 23:27:03 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 10351 invoked from network); 5 Mar 1998 15:27:02 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 5 Mar 1998 23:27:02 -0000 Received: (qmail 1309 invoked by uid 1052); 5 Mar 1998 15:27:02 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 1305 invoked from network); 5 Mar 1998 15:27:00 -0800 Received: from palrel3.hp.com (156.153.255.226) by pitbull.ecst.csuchico.edu with SMTP; 5 Mar 1998 23:27:00 -0000 Received: from srmail.sr.hp.com (srmail.sr.hp.com [15.4.45.14]) by palrel3.hp.com (8.8.5/8.8.5tis) with ESMTP id PAA10704 for ; Thu, 5 Mar 1998 15:26:58 -0800 (PST) Received: from tmbrwolf.sr.hp.com by srmail.sr.hp.com with ESMTP (1.37.109.16/15.5+ECS 3.3) id AA029220416; Thu, 5 Mar 1998 15:26:56 -0800 Received: (from jeantt@localhost) by tmbrwolf.sr.hp.com (8.7.6/8.7.3 TIS 5.0) id PAA15769; Thu, 5 Mar 1998 15:26:50 -0800 (PST) From: Jean Tillinghast Message-Id: <199803052326.PAA15769@tmbrwolf.sr.hp.com> Subject: Cupertino Java SIG (Feb 25) To: suehyun_chung@tmbrwolf.sr.hp.com, joann_l_wright-fisher@tmbrwolf.sr.hp.com, andrew_baensch@tmbrwolf.sr.hp.com, marco_smoorenburg@tmbrwolf.sr.hp.com, michal_odyniec@tmbrwolf.sr.hp.com, jacque_donahue@tmbrwolf.sr.hp.com, debbie_strathman@tmbrwolf.sr.hp.com, dan_pengra@tmbrwolf.sr.hp.com, laurelee_scholes@tmbrwolf.sr.hp.com, tim_l_bagwell@tmbrwolf.sr.hp.com, john_blyth@tmbrwolf.sr.hp.com, joyjeet_bhowmik@tmbrwolf.sr.hp.com, paul_rodriguez@tmbrwolf.sr.hp.com, david_bailey@tmbrwolf.sr.hp.com, TEJPAL_THANJAL@Non-HP-UnitedKingdom-om9.om.hp.com, joydip_das@tmbrwolf.sr.hp.com, gerald@hpbbse.bbn.hp.com, jimsingh@tmbrwolf.sr.hp.com (Jim Singh), michal_krombholz@tmbrwolf.sr.hp.com, dan_liszewski@hp-littlefalls-om1.om.hp.com, fidel_amezcua@tmbrwolf.sr.hp.com, chris_muntzer@tmbrwolf.sr.hp.com, leon_spencer@tmbrwolf.sr.hp.com, waynec@tmbrwolf.sr.hp.com (Wayne Cannon), rkoo@tmbrwolf.sr.hp.com (Ron Koo), pape@tmbrwolf.sr.hp.com (Jeff Pape), dsd@tmbrwolf.sr.hp.com (Donald St.Denis), mike_mcclendon@tmbrwolf.sr.hp.com, tony_beardsley@tmbrwolf.sr.hp.com, brianr@tmbrwolf.sr.hp.com (Brian Rushka), cherie@tmbrwolf.sr.hp.com (Cherie Gannon-Taylor), achung@tmbrwolf.sr.hp.com (Ann Chung), fraley@cup.hp.com, webmaster@tmbrwolf.sr.hp.com, paulc@tmbrwolf.sr.hp.com (Paul Chandler), hopcraft@tmbrwolf.sr.hp.com (Geoffrey Hopcraft) Date: Thu, 5 Mar 1998 15:26:49 -0800 (PST) Cc: amk@ecst.csuchico.edu (anne keunke) X-Mailer: ELM [version 2.4 PL25] Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Status: RO Content-Length: 8549 Here is some more interesting information. Wayne does a wonderful job of trying to transcribe notes from the meetings. However, if you want to get the whole thing...just let me know and you can phone in and hear it first hand. jean -- Jean Tillinghast (707) 577-3655 or beeper# 325-6681 fax: (707) 577-2036 email jeantt@sr.hp.com http://www.suntest.com/100percent/cpd/doc/tools/jpc.html If you are writing Java programs that you hope will ... you will want to do a JavaPureCheck. It reads your programming looking for hard-coded file names, mixing event models (), using classes out of the Sun libraries (change from release to release and are dangerous), ingesting classes into a system package. There is a frequently used little Java idom that hides exceptions: try { ... } catch {} Instead, let error bubble up to the top where they can get reported to the users and ultimately fixed. This may be ok for throw-away code. Can do concurrent test engineering. Can review test interface, can review for testability, can add some methods, for example, to objects that are mostly write-only interfaces to allow you to get at the data for testing. Do decent engineering. Think about your interfaces up front and stabilize them. Build your tests up front. You will change your interfaces, and you will have to change your tests. You don't know everything when you start. ... Don't write one giant test method that tests all of the fields of an object, but instead write multiple small objects so your changes are more contained. Strong type checking is handy when you are changing type definitions, because it will catch errors. Write durable tests. Make your tests durability across revisions. Does everyone use SetName on your AWT components -- if not your components will not be internationalizable. It will also make your tests more durable. Record your interface using an English language interface and play your test back using the French version. That is an example of a durable test across internationalization. Parameterize your tests. Instead of hard coding, ... For example, if your program gets data from a file, send in the information to the test as a parameter -- send this "Fred" and see if "Fred" is displayed, sent this "John" and see of "John" is displayed. The 100% Pure Java program is intended to help people write Java programs that run everywhere. It can and does check for compliance with the ideal, to see if you have "intentionally" wired your program to a particular platform. 100% Pure (JavaPureCheck) advises you of such things. Testing is representative of the user. If you didn't write once and test everywhere, you would be able to "run" everywhere. "Running" is, in effect, testing. If you don't test everywhere, you aren't supporting your customers who are running from everywhere. They have a lot of ideas, but they don't know if they can make money off of it. They are trying to make some money. They are spengin more money than they are making, but they are striving to make money. Threads: You can't test threads. You have to think them out. How can you test for race conditions or deadlocks? You can probably test for deadlocks, but it isn't easy. A good reference is "Concurrent Programming in Java" from the Addison Wesley series. Don't tell anyone, but they are working on something. They think they can do enough analysis of your program to be able to tell you that there is a possible race condition or a possible deadlock issue. Are you familiar with the waterfall model? Good luck. That model is outmoded. Consider the spiral model with continued feedback with the customer and there is continued refinement. "Spiral QA" incorporates QA into that spiral development model. Plan for test revisiions, incorporate QA and test people into your cycle, incorporate test development people into your team and into your spiral cycle. This allows you to get to the customer quicker because you have been doing QA all along. By incorporating quality assurance all along, you will catch problems earlier and will minimize the number of big changes that are caused by not finding out about problems until the very end that have a significant structural impact. It also give QA an opportunity to educate the designers about what are or are not good programming practices. Re: Beta testing: I'm ambivalent. My professional pride makes my skin crawl, however. Don't we care enough about the user to test it more thoroughly before it goes to market. However, until the customer really tries it, you will never know if you really understood the customers' requirements. It works better for Microsoft than it does for Joe and Betty in the garage, because they are innovators. This extended Beta is good for innovators, but at the same time, extended beta works against innovators by not allowing them to get their innovative product to market sooner. Regressions tests are very important to avoid re-incorporating the same errors again. Four kinds of program testers: Program checkers (like type-checking compilers, lint, JavaPureCheck, etc.) are the very best kind of testing because it catches things earlier, is comparatively painless, and is relatively certain because you get 100% coverage. Testing is essentially statistical sampling, because you can't test everything. Test Generators -- things that help to spit out a test. They perform the test, get the results back, and perform some checking between what was received back and what was predicted to be return. When you are testing, don't get stuck on the predicate "equal" (==). Often, other predicates are more meaningful or less expensive than testing for equal. For example, when testing floating point results, you want to test for a range and not for equals. Test Execution Frameworks -- Often just gather results, but some will actually associate tests with particular sections of source code that have changed. Test Design Tools -- will analyze the code and help you to create tests. Test Measurement Tools -- such as coverage tests determine how good a job of testing you have done. Test Automation: Tools are automation. It is good and bad. It is good because it legislates what is done and results in better repeatability and more consistent results. You get better leverage because there is one button that says "Do this test", or "Do all theses tests", as opposed to having someone manually trying do the same thing all the time, or in trying to remember what you did to repeat a bug. Test automation makes it easier to . Disadvantages because it takes longer to get the results because you have to configure the tools. Sometimes you are further away from the bug because you have more between you and the bug. The initial cost to build the framework. There is the cost of the test system and the learning curve for using it. Test tools are automation, but not oracle. If you are not investing very much in testing, then you are better off with manual testing because you won't get over the hump to automate testing. If you can afford to spend more up front, then you will get a better return on your investment after the investment. Explicit Plug for Sun's Test Products: JavaStar for Java is a lot like Xrunner, except that it is in Java. Since it is in Java, you can modify the source to include loops or other automation. You have access to all of the fields and all of the methods, unlike other systems where the test system doesn't know about the implementation object. JavaSpec is for unit or API testing if you have a library, etc. It allows you to build method by method with a kind of precondition/postcondition kind of specification -- e.g., setup code, assertions, etc. JavaScope is our coverage analysis. It works by rewriting your source to insert coverage metering code that report back to the JavaScope coverage database. The other way to get this kind of information is to instrument the virtual machine. The JavaScope has some disadvantages in that you have to perturb your code and that timing information isn't available. Advantage is that it will work on any virtual machine. It generates branch coverage counts, but not timing. Quantify for Java runs on the Microsoft VM. JavaLoad is in beta now, is written in Java, and will be announced at JavaONE. JavaSpec How do you test your Test Tools? We use our test tools to test our test tools, and they achieve about 60-70% statement coverage, but he doesn't know for certain. From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Fri Mar 06 08:20:11 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 29046 invoked from network); 6 Mar 1998 00:20:07 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 6 Mar 1998 08:20:07 -0000 Received: (qmail 22573 invoked by uid 1052); 6 Mar 1998 00:20:06 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 22533 invoked from network); 6 Mar 1998 00:19:59 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 6 Mar 1998 08:19:59 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id AAA08482 for CSCI397C-08-L; Fri, 6 Mar 1998 00:19:57 -0800 (PST) Received: from pitbull.ecst.csuchico.edu (pitbull.ecst.csuchico.edu [132.241.3.10]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with SMTP id AAA08477 for ; Fri, 6 Mar 1998 00:19:48 -0800 (PST) Received: (qmail 22496 invoked from network); 6 Mar 1998 00:19:45 -0800 Received: from pmdyn105.dip.csuchico.edu (HELO ecst.csuchico.edu) (132.241.248.105) by pitbull.ecst.csuchico.edu with SMTP; 6 Mar 1998 08:19:45 -0000 Message-ID: <34FFB3B7.155883A6@ecst.csuchico.edu> Date: Fri, 06 Mar 1998 00:28:39 -0800 From: Wing Keong Loo X-Mailer: Mozilla 4.04 [en] (Win95; I) MIME-Version: 1.0 To: csci397c-08@wombat.ecst.csuchico.edu, nhnguye@pacbell.com, wang@hpprsd1.sc.hp.com, jeantt@sr.hp.com, george.greene@tandem.com, greenejv@us.ibm.com, ron.su@tandem.com, Marcia_Paulson@hp.com, RicketsC@AV8BMX.chinalake.navy.mil, pam.ross@sunmail.chinalake.navy.mil, brianm@hprrc725.rose.hp.com, trungn@hp-vcd.vcd.hp.com, jimd@center.uscs.com, holly.hayes@bently.com, jloyd@hpbs972.boi.hp.com, tina@ndti.net, craigm@llnl.gov, wayne_cannon@hp.com, wcannon@wco.com, dcarter@us.ibm.com, veasna@cv.hp.com, david_paulson@hp.com, spuds@mackenzie.gardnerville.nv.us, anne.mackenzie@bently.com, thiha@us.ibm.com, achung@sr.hp.com, jim.steele@bently.com, fung_wilson@tandem.com, wschia@ecst.csuchico.edu, ron_garback@mlngw.chinalake.navy.mil Subject: Some BDK BeanBox tips. Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 704 Hi people, Thought I'd share some tips with those who are/will be playing with BDK BeanBox so that you won't have to lose too much hair. 1. If you are making a bean and want to see the changes made to it, it seems you have to restart beanbox to reload the jar or the changes won't show. 2. If you are using other packages in your bean such as Swing 1.0.1, make sure the beanbox invocation environment has the correct classpath to the package. In my version of BDK(Feb 98), the beanbox is started through a batch file, run.bat. It wipes out your default CLASSPATH so you will have to modify the file to include the current %CLASSPATH% if you have anything in your bean that requires it. Wing Keong. From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Sun Mar 08 03:10:11 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 10139 invoked from network); 7 Mar 1998 19:10:06 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 8 Mar 1998 03:10:06 -0000 Received: (qmail 10538 invoked by uid 1052); 7 Mar 1998 19:10:04 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 10513 invoked from network); 7 Mar 1998 19:10:03 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 8 Mar 1998 03:10:03 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id TAA10222 for CSCI397C-08-L; Sat, 7 Mar 1998 19:10:01 -0800 (PST) Received: from palrel3.hp.com (palrel3.hp.com [156.153.255.226]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id TAA10217 for ; Sat, 7 Mar 1998 19:09:58 -0800 (PST) Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel3.hp.com (8.8.5/8.8.5tis) with SMTP id TAA28642 for ; Sat, 7 Mar 1998 19:09:57 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA05107; Sat, 7 Mar 1998 20:13:15 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD4A04.FDB71280@hpb18347.boi.hp.com>; Sat, 7 Mar 1998 20:09:53 -0700 Message-Id: <01BD4A04.FDB71280@hpb18347.boi.hp.com> From: Jerry Loyd To: "'csci397c-08@wombat.ecst.csuchico.edu'" Subject: Images within Beans Date: Sat, 7 Mar 1998 20:13:42 -0700 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 644 I am trying to make a bean that uses a .gif file in its display. I can't seem to figure out how to store images inside a bean. All of = the 'setImage' methods I've tried require a path-name to a file. Even = if I manage to wrap that file into my bean's jar, the system then looks = at the computer's file directory, instead of into the bean, to find the = file. It seems I need to find a way to do one of the following: 1) Force JAVA to look into the bean 2) Store images in a class or object somehow, inside my bean If anybody has solved this problem, I'd sure like some pointers on where = to get started. Best regards, Jerry Loyd From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Sun Mar 08 04:21:44 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 15185 invoked from network); 7 Mar 1998 20:21:43 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 8 Mar 1998 04:21:43 -0000 Received: (qmail 15357 invoked by uid 1052); 7 Mar 1998 20:21:41 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 15330 invoked from network); 7 Mar 1998 20:21:40 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 8 Mar 1998 04:21:40 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id UAA10262 for CSCI397C-08-L; Sat, 7 Mar 1998 20:21:38 -0800 (PST) Received: from palrel3.hp.com (palrel3.hp.com [156.153.255.226]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id UAA10257 for ; Sat, 7 Mar 1998 20:21:34 -0800 (PST) Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel3.hp.com (8.8.5/8.8.5tis) with SMTP id UAA08267 for ; Sat, 7 Mar 1998 20:21:33 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA05215; Sat, 7 Mar 1998 21:24:52 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD4A0E.FE63E8C0@hpb18347.boi.hp.com>; Sat, 7 Mar 1998 21:21:29 -0700 Message-Id: <01BD4A0E.FE63E8C0@hpb18347.boi.hp.com> From: Jerry Loyd To: "'csci397c-08@wombat.ecst.csuchico.edu'" Subject: Wrapping images into beans, the answer Date: Sat, 7 Mar 1998 21:25:16 -0700 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 1031 Many thanks to Wing Keong. This less-than-obvious approach worked like a charm. Jerry Loyd =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Try getSystemResource() from ClassLoader. It works for me. Wing Keong. Jerry Loyd wrote: >=20 > I am trying to make a bean that uses a .gif file in its display. >=20 > I can't seem to figure out how to store images inside a bean. All of = the 'setImage' methods I've tried require a path-name to a file. Even = if I manage to wrap that file into my bean's jar, the system then looks = at the computer's file directory, instead of into the bean, to find the = file. >=20 > It seems I need to find a way to do one of the following: >=20 > 1) Force JAVA to look into the bean > 2) Store images in a class or object somehow, inside my bean >=20 > If anybody has solved this problem, I'd sure like some pointers on = where to get started. >=20 > Best regards, >=20 > Jerry Loyd From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Tue Mar 10 00:59:37 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 12140 invoked from network); 9 Mar 1998 16:59:31 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 10 Mar 1998 00:59:31 -0000 Received: (qmail 15144 invoked by uid 1052); 9 Mar 1998 16:59:29 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 15087 invoked from network); 9 Mar 1998 16:59:22 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 10 Mar 1998 00:59:22 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id QAA11560 for CSCI397C-08-L; Mon, 9 Mar 1998 16:59:20 -0800 (PST) Received: from palrel3.hp.com (palrel3.hp.com [156.153.255.226]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id QAA11555 for ; Mon, 9 Mar 1998 16:59:02 -0800 (PST) Received: from srmail.sr.hp.com (srmail.sr.hp.com [15.4.45.14]) by palrel3.hp.com (8.8.5/8.8.5tis) with ESMTP id QAA06394; Mon, 9 Mar 1998 16:58:53 -0800 (PST) Received: from canyon.sr.hp.com by srmail.sr.hp.com with ESMTP (1.37.109.16/15.5+ECS 3.3) id AA260811531; Mon, 9 Mar 1998 16:58:52 -0800 Received: from sr.hp.com (pc1558.sr.hp.com) by canyon.sr.hp.com with ESMTP (1.37.109.16/15.5+ECS 3.3) id AA163121530; Mon, 9 Mar 1998 16:58:50 -0800 Message-Id: <35049128.76DF160E@sr.hp.com> Date: Mon, 09 Mar 1998 17:02:32 -0800 From: Wayne Cannon Reply-To: wayne_cannon@hp.com Organization: Hewlett-Packard Company X-Mailer: Mozilla 4.04 [en] (WinNT; U) Mime-Version: 1.0 To: csci397c-08@wombat.ecst.csuchico.edu, nhnguye@pacbell.com, wang@hpprsd1.sc.hp.com, jeantt@sr.hp.com, george.greene@tandem.com, greenejv@us.ibm.com, ron.su@tandem.com, Marcia_Paulson@hp.com, RicketsC@AV8BMX.chinalake.navy.mil, pam.ross@sunmail.chinalake.navy.mil, brianm@hprrc725.rose.hp.com, trungn@hp-vcd.vcd.hp.com, jimd@center.uscs.com, holly.hayes@bently.com, jloyd@hpbs972.boi.hp.com, tina@ndti.net, craigm@llnl.gov, wayne_cannon@hp.com, wcannon@wco.com, dcarter@us.ibm.com, veasna@cv.hp.com, david_paulson@hp.com, spuds@mackenzie.gardnerville.nv.us, anne.mackenzie@bently.com, thiha@us.ibm.com, achung@sr.hp.com, jim.steele@bently.com, fung_wilson@tandem.com, wschia@ecst.csuchico.edu, ron_garback@mlngw.chinalake.navy.mil Subject: Design Tools (Together/J) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 1770 I downloaded and tried a copy of Together/J from Peter Coad's Object International this weekend. I was pretty impressed with the product, now wanting to try it on something more substantial. There is a free, downloadable "Whiteboard" edition on their web page (web.oi.com). Be careful, there is also another "Whiteboard" product that is not Together/J. It provides a tool for doing Object Models, generating Java Code as the result. It can also load from .java or .class files (reverse engineers) dynamically (not batch) in order to keep your Object Model and code in sync. It displays the graphical Object Model, the Java code, a multi-purpose Inspector/Property Editor (e.g., for describing variables and methods, adding javadoc-compatible comments, etc.) in optional panes of their project browser (my term). In addition to the Object Model, Together/J supports other design which I haven't tried yet, including use-cases, sequence diagrams, and state diagrams. It works hand-in-hand with JBuilder (especially) and Visual Cafe, though it's ability to reload changed files makes it easy to use any editor. In addition to printed hard-copy, Together/J generates HTML documentation which should make Anne happy. Unfortunately, the free "Whiteboard" edition of Together/J doesn't generate anything other than what you see on the screen -- no HTML and no hard-copy! It is distributed on the PC, Mac, and Solaris, but it is 100% Java so it should run on HP-UX and anything else. They distribute a version with a 100% Java installer, as well. Does anyone have any significant experience with Together/J (or the C++/Delphi Together/Pro) under a heavier, real, workload to see if it continues to hold up? They have a lot of heavyweight kudos on their Web page. From veasna@hpcvxve.cv.hp.com Tue Mar 10 19:21:48 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 6582 invoked from network); 10 Mar 1998 11:21:43 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 10 Mar 1998 19:21:43 -0000 Received: (qmail 14277 invoked by uid 1052); 10 Mar 1998 11:21:42 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 14212 invoked from network); 10 Mar 1998 11:21:37 -0800 Received: from palrel3.hp.com (156.153.255.226) by pitbull.ecst.csuchico.edu with SMTP; 10 Mar 1998 19:21:37 -0000 Received: from hpcvxve.cv.hp.com (hpcvxve.cv.hp.com [15.0.210.140]) by palrel3.hp.com (8.8.5/8.8.5tis) with ESMTP id LAA20794; Tue, 10 Mar 1998 11:21:25 -0800 (PST) Received: (from veasna@localhost) by hpcvxve.cv.hp.com (8.7.1/8.7.1) id LAA21191; Tue, 10 Mar 1998 11:21:12 -0800 (PST) From: Veasna Heng Message-Id: <199803101921.LAA21191@hpcvxve.cv.hp.com> Subject: Re: making jars To: amk@ecst.csuchico.edu (Anne M. Keuneke) Date: Tue, 10 Mar 1998 11:21:12 PST Cc: csci397c-08@wombat.ecst.csuchico.edu, nhnguye@pacbell.com, wang@hpprsd1.sc.hp.com, jeantt@sr.hp.com, george.greene@tandem.com, greenejv@us.ibm.com, ron.su@tandem.com, Marcia_Paulson@hp.com, RicketsC@AV8BMX.chinalake.navy.mil, pam.ross@sunmail.chinalake.navy.mil, brianm@hprrc725.rose.hp.com, trungn@hp-vcd.vcd.hp.com, jimd@center.uscs.com, holly.hayes@bently.com, jloyd@hpbs972.boi.hp.com, tina@ndti.net, craigm@llnl.gov, wayne_cannon@hp.com, wcannon@wco.com, dcarter@us.ibm.com, veasna@hp-cv.cv.hp.com, david_paulson@hp.com, spuds@mackenzie.gardnerville.nv.us, anne.mackenzie@bently.com, thiha@us.ibm.com, achung@sr.hp.com, jim.steele@bently.com, fung_wilson@tandem.com, wschia@ecst.csuchico.edu, ron_garback@mlngw.chinalake.navy.mil In-Reply-To: <35047448.6D68@ecst.csuchico.edu>; from "Anne M. Keuneke" at Mar 10, 98 6:59 am X-Mailer: Elm [revision: 212.2] Status: RO Content-Length: 2555 Hi Dr. Keuneke, I have tried some Java Bean examples and they all worked fine for me when I tried to incorperate them into the BeanBox. Here are the steps I would do for each Bean I would like to put into the BeanBox environment: 1. Assume that my root directory is C:\BeanStuff, I create the following subdirectories: (I work on PC with Windows 95) C:\BeanStuff\sun\beanbox\beans The *.java files are at C:\BeanStuff directory. For this example, let's say I would like to have MyFirstBean class to be incorperated with the BeanBox environment. 2. Declare the following package statement at the beginning of the MyFirstBean.java file: package sun/beanbox/beans 3. Create the manifest file with the following content: Manifest-Version: 1.0 Name: sun/beanbox/beans/MyFirstBean.class Java-Bean: True 4. While at C:\BeanStuff, I compile MyFirstBean.java with the following command: javac -d . MyFirstBean.java The -d option tells the Java compiler to place MyFirstBean.class in its proper subdirectory as indicated by the package statement. The . indicates that the current directory is the package root. 5. Create the JAR file for MyFirstBean.class with the following command: jar cfm MyFirstBean.jar manifest_file \ sun/beanbox/beans/MyFirstBean.class 6. Copy MyFirstBean.jar to the BeanBox BDK's jars subdirectory. On my PC system, the BeanBox BDK is installed at C:\BDK. So I would copy MyFirstBean.jar to the BeanBox BDK location as: copy MyFirstBean.jar C:\BDK\jars\MyFirstBean.jar 7. Start the BeanBox and MyFirstBean should be listed in the BeanBox's ToolBox window. These are the steps that worked for me when I would like to add a Bean to the BeanBox. I hope these steps might offer some help to your problem. I will try to work with YesNoDialog today when I get home to see if I can get it into the BeanBox. Thanks, Veasna > > Has anyone else tried to make a jar out of the YesNoDialog > class in the Java In a Nutshell book? > > I did, what I thought was, everything correct, but when I > try to put it in a beanbox it says that the jar file > didn't have any beans! I made the manifest and had the > Java-Bean: True > line with the right class????? > > I even edited it to make it implements Serializable... > > Has anyone else tried? > > I did the same with the Acme06Bean in the tutorial at > http://www.ecst.csuchico.edu/~amk/foo/java.tutor/beans/Beans2/properties.html > > I get the same error with it. Sigh > > Anne > From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Wed Mar 11 03:50:37 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 16438 invoked from network); 10 Mar 1998 19:50:31 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 11 Mar 1998 03:50:31 -0000 Received: (qmail 20925 invoked by uid 1052); 10 Mar 1998 19:50:30 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 20895 invoked from network); 10 Mar 1998 19:50:29 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 11 Mar 1998 03:50:29 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id TAA12985 for CSCI397C-08-L; Tue, 10 Mar 1998 19:50:27 -0800 (PST) Received: from palrel3.hp.com (palrel3.hp.com [156.153.255.226]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id TAA12980 for ; Tue, 10 Mar 1998 19:50:24 -0800 (PST) Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel3.hp.com (8.8.5/8.8.5tis) with SMTP id TAA19854 for ; Tue, 10 Mar 1998 19:50:23 -0800 (PST) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA17386; Tue, 10 Mar 1998 20:53:58 -0700 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD4C66.299BE660@hpb18347.boi.hp.com>; Tue, 10 Mar 1998 20:50:30 -0700 Message-Id: <01BD4C66.299BE660@hpb18347.boi.hp.com> From: Jerry Loyd To: "'csci397c-08@wombat.ecst.csuchico.edu'" Subject: Initial size of Bean Date: Tue, 10 Mar 1998 20:54:04 -0700 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 424 I've created a bean that I can now use in both JBuilder and the BeanBox. However, in BeanBox there are two problems: 1) The size of the bean is HUGE!!!!!!!!! 2) I can't change the size in BeanBox Any pointers on how to enable size-changes, as well as control the initial size would be greatly appreciated. Jerry Loyd P.S. I gave up on using Images to display the faces of my dice. That's how I got it all to work. From RicketsC@AV8BMX.chinalake.navy.mil Thu Mar 12 23:02:52 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 23915 invoked from network); 12 Mar 1998 15:02:51 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 12 Mar 1998 23:02:51 -0000 Received: (qmail 20067 invoked by uid 1052); 12 Mar 1998 15:02:50 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 20056 invoked from network); 12 Mar 1998 15:02:49 -0800 Received: from av8bmx.chinalake.navy.mil (129.131.44.100) by pitbull.ecst.csuchico.edu with SMTP; 12 Mar 1998 23:02:49 -0000 Received: by av8bmx.chinalake.navy.mil with Internet Mail Service (5.0.1458.49) id ; Thu, 12 Mar 1998 15:02:44 -0800 Message-ID: <6125DA5DE40DD111A35700A0C92C83AAD61F@av8bmx.chinalake.navy.mil> From: "Rickets, Chris" To: csci397c-08@wombat.ecst.csuchico.edu, nhnguye@pacbell.com, wang@hpprsd1.sc.hp.com, jeantt@sr.hp.com, george.greene@tandem.com, greenejv@us.ibm.com, ron.su@tandem.com, Marcia_Paulson@hp.com, "Rickets, Chris" , pam.ross@sunmail.chinalake.navy.mil, brianm@hprrc725.rose.hp.com, trungn@hp-vcd.vcd.hp.com, jimd@center.uscs.com, holly.hayes@bently.com, jloyd@hpbs972.boi.hp.com, tina@ndti.net, craigm@llnl.gov, wayne_cannon@hp.com, wcannon@wco.com, dcarter@us.ibm.com, veasna@cv.hp.com, david_paulson@hp.com, spuds@mackenzie.gardnerville.nv.us, anne.mackenzie@bently.com, thiha@us.ibm.com, achung@sr.hp.com, jim.steele@bently.com, fung_wilson@tandem.com, wschia@ecst.csuchico.edu, "Garback, Ron" Cc: "Anne Kinikie (E-mail)" Subject: Tip on Adding .gif file as Icon Date: Thu, 12 Mar 1998 15:02:41 -0800 X-Priority: 3 Return-Receipt-To: "Rickets, Chris" MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.0.1458.49) Content-Type: text/plain Status: RO Content-Length: 476 Tip on Adding gif as Icon Searching the web I found several images that I would like as an Icon so I captured them and saved them as a .gif image. What I found in attempting to add them as my Beans Icon is that the image must be small. The first one that I tried was about 2" tall by 3.5" wide, and it would not show up. The ones that would load were around 1.5" tall by 1.5" wide or smaller. Just a thought while searching for your favorite .gif Image Icon. Chris... From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Sun Mar 15 08:34:36 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 26404 invoked from network); 15 Mar 1998 00:34:30 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 15 Mar 1998 08:34:30 -0000 Received: (qmail 28234 invoked by uid 1052); 15 Mar 1998 00:34:27 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 28205 invoked from network); 15 Mar 1998 00:34:25 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 15 Mar 1998 08:34:25 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id AAA16355 for CSCI397C-08-L; Sun, 15 Mar 1998 00:34:23 -0800 (PST) Received: from server.ndti.net (server.ndti.net [205.180.158.1]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id AAA16350 for ; Sun, 15 Mar 1998 00:33:37 -0800 (PST) Received: from ndti.net ([205.180.158.182]) by server.ndti.net (post.office MTA v2.0 0813 ID# 0-44025U5000L500S0) with ESMTP id AAA44; Sun, 15 Mar 1998 00:32:08 -0800 Message-ID: <350B92BA.6BB8C3CA@ndti.net> Date: Sun, 15 Mar 1998 00:35:06 -0800 From: Bertina Creighton X-Mailer: Mozilla 4.02 [en] (Win95; U) MIME-Version: 1.0 To: csci397c-08@wombat.ecst.csuchico.edu, nhnguye@pacbell.com, wang@hpprsd1.sc.hp.com, jeantt@sr.hp.com, george.greene@tandem.com, greenejv@us.ibm.com, ron.su@tandem.com, Marcia_Paulson@hp.com, RicketsC@AV8BMX.chinalake.navy.mil, pam.ross@sunmail.chinalake.navy.mil, brianm@hprrc725.rose.hp.com, trungn@hp-vcd.vcd.hp.com, jimd@center.uscs.com, holly.hayes@bently.com, jloyd@hpbs972.boi.hp.com, tina@ndti.net, craigm@llnl.gov, wayne_cannon@hp.com, wcannon@wco.com, dcarter@us.ibm.com, veasna@cv.hp.com, david_paulson@hp.com, spuds@mackenzie.gardnerville.nv.us, anne.mackenzie@bently.com, thiha@us.ibm.com, achung@sr.hp.com, jim.steele@bently.com, fung_wilson@tandem.com, wschia@ecst.csuchico.edu, ron_garback@mlngw.chinalake.navy.mil Subject: "Class not found in import" Content-Type: multipart/alternative; boundary="------------D0518D7F71A164A13D0F57ED" Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 2373 --------------D0518D7F71A164A13D0F57ED Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit I have been spending a considerable amount of time trying to run the RangeBean example. I looking for someone who is currently running on a PC, and has experience the classpath problem as stated below. > C:\Tina_Beans\sun\beanbox\beans\Range\RangeBean.java:55: > > Class sun.beanbox.beans.Range.input.IntTextBean not found in import. > import sun.beanbox.beans.Range.input.IntTextBean; > ^ > I have added the path to my classpath, and I still get the same response. How do I get the java compiler to recognize the class. I have even tried to move and compile the class in the same directory - still to no avail - the compiler refuses to acknoledge that the class is in the current directory. I have also re-installed jdk1.1.5, but that also gave me the same results - Can anyone help with this problem. Just for the sake of maintaining my class files, I would hate to have to embed every class in the same file. Hope I get some responses!!!!! Tina. --------------D0518D7F71A164A13D0F57ED Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit I have been spending a considerable amount of time trying to run the RangeBean example.
I looking for someone who is currently running on a PC, and has experience the classpath problem as stated below.
C:\Tina_Beans\sun\beanbox\beans\Range\RangeBean.java:55:
Class sun.beanbox.beans.Range.input.IntTextBean not found in import.
import sun.beanbox.beans.Range.input.IntTextBean;
       ^
  I have added the path to my classpath, and I still get the same response.  How do I get the java compiler to recognize the class.  I have even tried to move and compile the class in the
same directory - still to no avail - the compiler refuses to acknoledge that the class is in the current directory.

I have also re-installed jdk1.1.5, but that also gave me the same results -
Can anyone help with this problem.  Just for the sake of maintaining my class files, I would hate to have to embed every class in the same file.

Hope I get some responses!!!!!
Tina. --------------D0518D7F71A164A13D0F57ED-- From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Sun Mar 15 20:21:58 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 8386 invoked from network); 15 Mar 1998 12:21:55 -0800 Received: from pitbull.ecst.csuchico.edu (132.241.3.10) by spam.ecst.csuchico.edu with SMTP; 15 Mar 1998 20:21:55 -0000 Received: (qmail 27798 invoked by uid 1052); 15 Mar 1998 12:21:53 -0800 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 27764 invoked from network); 15 Mar 1998 12:21:51 -0800 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by pitbull.ecst.csuchico.edu with SMTP; 15 Mar 1998 20:21:51 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id MAA16688 for CSCI397C-08-L; Sun, 15 Mar 1998 12:21:49 -0800 (PST) Received: from leprosy.ecst.csuchico.edu (leprosy.ecst.csuchico.edu [132.241.4.14]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with SMTP id MAA16683 for ; Sun, 15 Mar 1998 12:21:44 -0800 (PST) From: bapper@ecst.csuchico.edu Received: (qmail 27968 invoked by uid 7582); 15 Mar 1998 12:21:39 -0800 Message-ID: <19980315202139.27967.qmail@leprosy.ecst.csuchico.edu> Subject: Re: "Class not found in import" To: tina@ndti.net (Bertina Creighton) Date: Sun, 15 Mar 1998 12:21:39 -0800 (PST) Cc: csci397c-08@wombat.ecst.csuchico.edu, nhnguye@pacbell.com, wang@hpprsd1.sc.hp.com, jeantt@sr.hp.com, george.greene@tandem.com, greenejv@us.ibm.com, ron.su@tandem.com, Marcia_Paulson@hp.com, RicketsC@AV8BMX.chinalake.navy.mil, pam.ross@sunmail.chinalake.navy.mil, brianm@hprrc725.rose.hp.com, trungn@hp-vcd.vcd.hp.com, jimd@center.uscs.com, holly.hayes@bently.com, jloyd@hpbs972.boi.hp.com, tina@ndti.net, craigm@llnl.gov, wayne_cannon@hp.com, wcannon@wco.com, dcarter@us.ibm.com, veasna@cv.hp.com, david_paulson@hp.com, spuds@mackenzie.gardnerville.nv.us, anne.mackenzie@bently.com, thiha@us.ibm.com, achung@sr.hp.com, jim.steele@bently.com, fung_wilson@tandem.com, wschia@ecst.csuchico.edu, ron_garback@mlngw.chinalake.navy.mil In-Reply-To: <350B92BA.6BB8C3CA@ndti.net> from "Bertina Creighton" at Mar 15, 98 00:35:06 am X-Mailer: ELM [version 2.4 PL25] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 1129 > > > C:\Tina_Beans\sun\beanbox\beans\Range\RangeBean.java:55: > > > > Class sun.beanbox.beans.Range.input.IntTextBean not found in import. > > import sun.beanbox.beans.Range.input.IntTextBean; > > ^ > > > I have added the path to my classpath, and I still get the same > response. How do I get the java compiler to recognize the class. I > have even tried to move and compile the class in the > same directory - still to no avail - the compiler refuses to acknoledge > that the class is in the current directory. > When you compile, what directory are you in? You need to compile from: C:\Tina_Beans\ A sample call would look like this: C:\Tina_Beans\javac sun\beanbox\beans\Range\RangeBean.java The reason for this is the compiler looks from the current directory to find packages it needs. Each subdirectory represents a different package. Make sure either the class IntTextBean is in C:\Tina_Beans\sun\beanbox\beans\Range\input\ or its source file is there. If the source file is there, it will try to compile it. If you were already doing this, I don't know what the problem is. BAPper From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Sat Apr 18 00:45:03 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 20999 invoked from network); 17 Apr 1998 17:45:01 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 18 Apr 1998 00:45:01 -0000 Received: (qmail 19423 invoked by uid 1052); 17 Apr 1998 17:44:55 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 19403 invoked from network); 17 Apr 1998 17:44:54 -0700 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by gangrene.ecst.csuchico.edu with SMTP; 18 Apr 1998 00:44:54 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id RAA11513 for CSCI397C-08-L; Fri, 17 Apr 1998 17:44:51 -0700 (PDT) Received: from atlrel1.hp.com (atlrel1.hp.com [156.153.255.210]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id RAA11508 for ; Fri, 17 Apr 1998 17:44:47 -0700 (PDT) Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by atlrel1.hp.com (8.8.6/8.8.5tis) with SMTP id UAA08365 for ; Fri, 17 Apr 1998 20:44:31 -0400 (EDT) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA01307; Fri, 17 Apr 1998 18:49:09 -0600 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD6A30.E2F4A420@hpb18347.boi.hp.com>; Fri, 17 Apr 1998 18:44:43 -0600 Message-Id: <01BD6A30.E2F4A420@hpb18347.boi.hp.com> From: Jerry Loyd To: "'csci397c-08@wombat.ecst.csuchico.edu'" Subject: setXORMode() and JBuilder Date: Fri, 17 Apr 1998 18:48:32 -0600 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 422 In case anyone else is fighting with this... setXORMode(), used to "erase" in things like rubber-band lines and = boxes, just would not work for me, when testing my program with = Borland's JVM. Instead of erasing on the second "draw", it would do = nothing leaving every line I had drawn on the screen... it was a mess!! = However, the very same code, running with Sun's jdk 1.2 JVM worked just = fine. Jerry Loyd From bapper@ecst.csuchico.edu Sun Apr 19 16:57:44 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 10894 invoked from network); 19 Apr 1998 09:57:43 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 19 Apr 1998 16:57:43 -0000 Received: (qmail 17533 invoked by uid 1052); 19 Apr 1998 09:57:43 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 17529 invoked from network); 19 Apr 1998 09:57:42 -0700 Received: from pathogen.ecst.csuchico.edu (132.241.4.10) by gangrene.ecst.csuchico.edu with SMTP; 19 Apr 1998 16:57:42 -0000 Received: (qmail 18066 invoked by uid 7582); 19 Apr 1998 09:57:41 -0700 Message-ID: <19980419165741.18065.qmail@pathogen.ecst.csuchico.edu> From: bapper@ecst.csuchico.edu Subject: Re: PreparedStatement To: amk@ecst.csuchico.edu Date: Sun, 19 Apr 1998 09:57:41 -0700 (PDT) In-Reply-To: <19980418204651.17787.qmail@expert.ecst.csuchico.edu> from "amk@ecst.csuchico.edu" at Apr 18, 98 01:46:51 pm X-Mailer: ELM [version 2.4 PL25] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Status: RO Content-Length: 864 > > > It would seem that PreparedStatement was a pretty basic thing though... > I hate this when one doesn't know if it is the *system* or > the programmer...sigh > The method for a prepared statement just throws a SQL exception with the message that MySQL doesn't support this. After reading some docs for MySQL, it looks like they don't support the idea of a "cursor". A cursor in database terms is sortof like a queue that is set up for data that is to be retrieved a row at a time. So, you can do a select into a cursor, then you can say "get the next row" in a loop and process each row on at a time. MySQL doesn't even support a select into a table (i.e. "SELECT foo, bar INTO store FROM foobar"). Posgresql supports these features. I'll have to see about getting that one up somewhere as well, but, not any time soon. For next semester. BAPper From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Tue Apr 21 02:32:02 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 9690 invoked from network); 20 Apr 1998 19:31:59 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 21 Apr 1998 02:31:59 -0000 Received: (qmail 2754 invoked by uid 1052); 20 Apr 1998 19:31:54 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 2717 invoked from network); 20 Apr 1998 19:31:52 -0700 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by gangrene.ecst.csuchico.edu with SMTP; 21 Apr 1998 02:31:52 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id TAA13765 for CSCI397C-08-L; Mon, 20 Apr 1998 19:31:49 -0700 (PDT) Received: from Tandem.com (suntan.tandem.com [192.216.221.8]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id TAA13760 for ; Mon, 20 Apr 1998 19:31:39 -0700 (PDT) Received: from adm.loc1.tandem.com (adm.loc1.tandem.com [155.186.172.56]) by Tandem.com (8.8.8/2.0.1) with SMTP id SAA21986; Mon, 20 Apr 1998 18:41:07 -0700 (PDT) Received: from ronsu-nt by adm.loc1.tandem.com (SMI-8.6/6main.940209) id SAA29232; Mon, 20 Apr 1998 18:41:06 -0700 Received: by localhost with Microsoft MAPI; Mon, 20 Apr 1998 18:39:24 -0700 Message-ID: From: Ron Su Reply-To: "ron.su@tandem.com" To: "'amk@ecst.csuchico.edu'" Cc: "csci397c-08@wombat.ecst.csuchico.edu" , "nhnguye@pacbell.com" , "wang@hpprsd1.sc.hp.com" , "jeantt@sr.hp.com" , "greenejv@us.ibm.com" , "Su, Ron H" Cc: "Marcia_Paulson@hp.com" , "RicketsC@AV8BMX.chinalake.navy.mil" , "pam.ross@sunmail.chinalake.navy.mil" , "brianm@hprrc725.rose.hp.com" , "trungn@hp-vcd.vcd.hp.com" , "jimd@center.uscs.com" Cc: "holly.hayes@bently.com" , "jloyd@hpbs972.boi.hp.com" , "tina@ndti.net" , "craigm@llnl.gov" , "wayne_cannon@hp.com" , "wcannon@wco.com" Cc: "dcarter@us.ibm.com" , "veasna@cv.hp.com" , "david_paulson@hp.com" , "spuds@mackenzie.gardnerville.nv.us" , "anne.mackenzie@bently.com" , "thiha@us.ibm.com" Cc: "achung@sr.hp.com" , "jim.steele@bently.com" , "Fung, Wilson" , "wschia@ecst.csuchico.edu" , "ron_garback@mlngw.chinalake.navy.mil" , "Su, Ron H" Subject: RE: MySQL ==>(.next() works fine!) Date: Mon, 20 Apr 1998 18:41:04 -0700 Organization: Tandem Computers X-Mailer: Microsoft Internet E-mail/MAPI - 8.0.0.4211 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 638 After I discovered the prepared statement problem with MySQL last Friday, I have done some more experiments with MySQL and Microsoft SQL Server. I can run almost everything on MS SQL Server except some weird "syntax error" stuffs, for example, MS SQL does not like DOUBLE. I have to replace DOUBLE with FLOAT, then it stops complaining. MySQL can execute simple SQL statement but not the PreparedStatement. It works for ResultSetMetaData but not for DatabaseMetaData. With those limitations, I think I have to trim my JDBC lab to a simpler version when it is run on MySQL. Just to share my experience here. Hope it helps. Ron From OWNER-CSCI397C-04@wombat.ecst.csuchico.edu Tue Apr 28 00:10:05 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 22940 invoked from network); 27 Apr 1998 17:10:04 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 28 Apr 1998 00:10:04 -0000 Received: (qmail 646 invoked by uid 1052); 27 Apr 1998 16:41:11 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 20360 invoked from network); 27 Apr 1998 16:13:48 -0700 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by gangrene.ecst.csuchico.edu with SMTP; 27 Apr 1998 23:13:48 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id QAA20083 for CSCI397C-04-L; Mon, 27 Apr 1998 16:13:44 -0700 (PDT) Received: from mxsuncenter1.uscs.com (mxsuncenter1.uscs.com [165.79.16.80]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id QAA20078 for ; Mon, 27 Apr 1998 16:13:41 -0700 (PDT) Received: by mxsuncenter1.uscs.com with Internet Mail Service (5.5.1960.3) id ; Mon, 27 Apr 1998 16:11:26 -0700 Message-ID: <113C22F0C0AFD1119BCC00805F9FB6424EABA1@mxibs1.ibs.uscs.com> From: "Kreth, James" To: "'CSU Chico Class Roster'" Subject: Resolved the deployment problem Date: Mon, 27 Apr 1998 16:11:16 -0700 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.1960.3) Content-Type: text/plain Sender: OWNER-CSCI397C-04@wombat.ecst.csuchico.edu Status: RO Content-Length: 1087 To ALL: I've finally resolved the deployment problem I was having with my JBuilder applet. As it turned out, I needed to upgrade to the VERY latest Netscape Communicator (Version 4.0.5). Version 4.0.4 supposedly has a separate patch to allow it to run the JDK 1.1.4 event model but it did not work for me. The 4.0.5 upgrade is available at: http://developer.netscape.com/software/jdk/download.html In addition, My applet tag now looks like this: The archive files listed in the ARCHIVE line are automatically downloaded (and cached) when the applet first starts up. These are pretty large so it may take a while. Now that I've got it working, I'm going to try some experiments to reduce the download times. I'll let everyone know what I find. Thanks, Jim Kreth International Billing Services james_kreth@billing.com From OWNER-CSCI397C-04@wombat.ecst.csuchico.edu Tue Apr 28 01:53:25 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 21711 invoked from network); 27 Apr 1998 18:20:38 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 28 Apr 1998 01:20:38 -0000 Received: (qmail 25881 invoked by uid 1052); 27 Apr 1998 17:56:45 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 13432 invoked from network); 27 Apr 1998 17:19:30 -0700 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by gangrene.ecst.csuchico.edu with SMTP; 28 Apr 1998 00:19:30 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id RAA20113 for CSCI397C-04-L; Mon, 27 Apr 1998 17:19:27 -0700 (PDT) Received: from mxsuncenter1.uscs.com (mxsuncenter1.uscs.com [165.79.16.80]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id RAA20108 for ; Mon, 27 Apr 1998 17:19:24 -0700 (PDT) Received: by mxsuncenter1.uscs.com with Internet Mail Service (5.5.1960.3) id ; Mon, 27 Apr 1998 17:17:20 -0700 Message-ID: <113C22F0C0AFD1119BCC00805F9FB6424EABA2@mxibs1.ibs.uscs.com> From: "Kreth, James" To: "'CSU Chico Class Roster'" Subject: Download improvements on jar files for JBuilder Date: Mon, 27 Apr 1998 17:17:10 -0700 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.1960.3) Content-Type: text/plain Sender: OWNER-CSCI397C-04@wombat.ecst.csuchico.edu Status: RO Content-Length: 928 Well gang, I rebuilt my applet and used JBuilder's Deployment Wizard to generate a single "referenced classes only" archive file. This wizard builds a single archive file with only those classes that you have referenced in your code. So, instead of downloading jbcl-rt.zip (1.7 MB) and jgl.zip (380KB) when you load the applet, now you only get StockWatcher.jar (450 KB). Much better download times. Even the 450KB it's quite large, but that's primarily do to the use of Borland's GridControl. This is a very complex control and because it references a whole bunch of other classes, they all get included as well. New applet tag: Jim Kreth International Billing Services james_kreth@billing.com From wingkeon@ecst.csuchico.edu Fri May 01 07:29:58 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 2086 invoked from network); 1 May 1998 00:29:57 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 1 May 1998 07:29:57 -0000 Received: (qmail 21075 invoked by uid 1052); 1 May 1998 00:29:56 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 21071 invoked from network); 1 May 1998 00:29:55 -0700 Received: from pmdyn115.dip.csuchico.edu (HELO ecst.csuchico.edu) (132.241.248.115) by gangrene.ecst.csuchico.edu with SMTP; 1 May 1998 07:29:55 -0000 Message-ID: <35497A77.10E4CD01@ecst.csuchico.edu> Date: Fri, 01 May 1998 00:32:07 -0700 From: Wing Keong Loo X-Mailer: Mozilla 4.05 [en] (Win95; I) MIME-Version: 1.0 To: amk@ecst.csuchico.edu Subject: Coming clean. Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Status: RO Content-Length: 1336 Hi Anne, I was reading about hte issues you have and have soem ideas to offer. My ideas are based on what I see and have read about but I can't point out hard docs unless I actually go research it ( I may later ). Anyway, on the page: Since the remote objects are instantiated as the interfaces there is no problem at client compilation time since the interfaces are there (at the client side too). What about client compilation and not having the non-remote .classes present (since they are dynamically loaded at run time.) In this example they (conveniently) had the non-remote objects interface there as well. Is this a pre-requisite? I'd be carefull about the statement about remote objects being instantiated as interfaces. To be more pedantic, I think remote objects are brought in and instantiated as stubs which implement the said interface. Also if you look into serialized streams, you will see the class names associated with the serialized object. I believe deserializer looks at this info and tries to gets these classes loaded and instantiated. I don't think non-remote object must implement an interface that is known to the client. I will experiment by making a remote method that returns a generic object reference that may be some actual object and doing some introspection on it. We'll see what happens. Wing. From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Sun May 03 23:49:22 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 5282 invoked from network); 3 May 1998 16:49:18 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 3 May 1998 23:49:18 -0000 Received: (qmail 19882 invoked by uid 1052); 3 May 1998 16:49:13 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 19835 invoked from network); 3 May 1998 16:49:01 -0700 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by gangrene.ecst.csuchico.edu with SMTP; 3 May 1998 23:49:01 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id QAA24705 for CSCI397C-08-L; Sun, 3 May 1998 16:48:58 -0700 (PDT) Received: from palrel3.hp.com (palrel3.hp.com [156.153.255.226]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id QAA24700 for ; Sun, 3 May 1998 16:48:32 -0700 (PDT) Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by palrel3.hp.com (8.8.5/8.8.5tis) with SMTP id QAA08662 for ; Sun, 3 May 1998 16:48:31 -0700 (PDT) Received: from [15.39.88.50] by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA23080; Sun, 3 May 1998 17:54:22 -0600 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD76BB.ABE7D0A0@hpb18347.boi.hp.com>; Sun, 3 May 1998 17:48:25 -0600 Message-Id: <01BD76BB.ABE7D0A0@hpb18347.boi.hp.com> From: Jerry Loyd To: "'Rickets, Chris'" , "csci397c-08@wombat.ecst.csuchico.edu" , "nhnguye@pacbell.com" , "wang@hpprsd1.sc.hp.com" , "jeantt@sr.hp.com" , "george.greene@tandem.com" To: "greenejv@us.ibm.com" , "ron.su@tandem.com" , "Marcia_Paulson@hp.com" , "pam.ross@sunmail.chinalake.navy.mil" , "brianm@hprrc725.rose.hp.com" , "trungn@hp-vcd.vcd.hp.com" To: "jimd@center.uscs.com" , "holly.hayes@bently.com" , "jloyd@hpbs972.boi.hp.com" , "tina@ndti.net" , "craigm@llnl.gov" , "wayne_cannon@hp.com" To: "wcannon@wco.com" , "dcarter@us.ibm.com" , "veasna@cv.hp.com" , "david_paulson@hp.com" , "spuds@mackenzie.gardnerville.nv.us" , "anne.mackenzie@bently.com" To: "thiha@us.ibm.com" , "achung@sr.hp.com" , "jim.steele@bently.com" , "fung_wilson@tandem.com" , "wschia@ecst.csuchico.edu" , "Garback, Ron" Subject: rmic and classpath Date: Sun, 3 May 1998 17:51:51 -0600 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 546 I'm trying to run the samples in the Core Java book, and running into = classpath problems with the rmic tool. The examples in the book did not use 'packages', but I did. It wasn't = much of a problem to get rmic to create the ...Impl_Skel.class and = ...Impl_Stub.class files. However, I guess I have no idea what it did = as far as package names are concerned for these classes. It seems no = matter where I put them in my directory, they just can't be found. Has anyone else dealt with this, and has some advice to pass on? Jerry Loyd From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Wed May 06 01:27:47 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 24671 invoked from network); 5 May 1998 18:27:44 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 6 May 1998 01:27:43 -0000 Received: (qmail 19744 invoked by uid 1052); 5 May 1998 18:27:39 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 19621 invoked from network); 5 May 1998 18:26:55 -0700 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by gangrene.ecst.csuchico.edu with SMTP; 6 May 1998 01:26:55 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id SAA26545 for CSCI397C-08-L; Tue, 5 May 1998 18:26:03 -0700 (PDT) Received: from Tandem.com (suntan.tandem.com [192.216.221.8]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id SAA26538 for ; Tue, 5 May 1998 18:23:21 -0700 (PDT) Received: from adm.loc1.tandem.com (adm.loc1.tandem.com [155.186.172.56]) by Tandem.com (8.8.8/2.0.1) with SMTP id RAA26886; Tue, 5 May 1998 17:29:26 -0700 (PDT) Received: from ronsu-nt by adm.loc1.tandem.com (SMI-8.6/6main.940209) id RAA19993; Tue, 5 May 1998 17:29:26 -0700 Received: by localhost with Microsoft MAPI; Tue, 5 May 1998 17:27:02 -0700 Message-ID: From: Ron Su Reply-To: "ron.su@tandem.com" To: "'Anne M. Keuneke'" , "csci397c-08@wombat.ecst.csuchico.edu" , "nhnguye@pacbell.com" , "wang@hpprsd1.sc.hp.com" , "jeantt@sr.hp.com" , "Greene, George" To: "greenejv@us.ibm.com" , "Su, Ron H" , "Marcia_Paulson@hp.com" , "RicketsC@AV8BMX.chinalake.navy.mil" , "pam.ross@sunmail.chinalake.navy.mil" , "brianm@hprrc725.rose.hp.com" To: "trungn@hp-vcd.vcd.hp.com" , "jimd@center.uscs.com" , "holly.hayes@bently.com" , "jloyd@hpbs972.boi.hp.com" , "tina@ndti.net" , "craigm@llnl.gov" To: "wayne_cannon@hp.com" , "wcannon@wco.com" , "dcarter@us.ibm.com" , "veasna@cv.hp.com" , "david_paulson@hp.com" , "spuds@mackenzie.gardnerville.nv.us" To: "anne.mackenzie@bently.com" , "thiha@us.ibm.com" , "achung@sr.hp.com" , "jim.steele@bently.com" , "Fung, Wilson" , "wschia@ecst.csuchico.edu" To: "ron_garback@mlngw.chinalake.navy.mil" , "ganz@llnl.gov" Cc: "Su, Ron H" Subject: RE: Last lab Date: Tue, 5 May 1998 17:29:17 -0700 Organization: Tandem Computers X-Mailer: Microsoft Internet E-mail/MAPI - 8.0.0.4211 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 709 Hi folks, Download jdk1.1.6 and use it to do RMI stuff. Otherwise, the Naming.rebind() does not work using jdk1.1.5. Well, this is what I learned when I tried the WarehouseApplet example from the CoreJavaBook. I may not need more extra points. But, I won't turn them down if you want to give me more. Thanks, Anne. Ron > Also, please feel free to share what you > are learning as you learn it...maybe we could give points for > the first submission of the most useful words of wisdom individuals > come up with - or the most potentially useful ideas (you know - > things you sit with for two days since you didn't know - when > someone else could see in a second since they have experienced it) :-) From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Wed May 06 01:36:14 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 25972 invoked from network); 5 May 1998 18:36:10 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 6 May 1998 01:36:10 -0000 Received: (qmail 20963 invoked by uid 1052); 5 May 1998 18:36:03 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 20937 invoked from network); 5 May 1998 18:36:02 -0700 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by gangrene.ecst.csuchico.edu with SMTP; 6 May 1998 01:36:02 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id SAA26559 for CSCI397C-08-L; Tue, 5 May 1998 18:35:59 -0700 (PDT) Received: from smtp4.ny.us.ibm.COM (smtp4.ny.us.ibm.com [198.133.22.43]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id SAA26554 for ; Tue, 5 May 1998 18:35:55 -0700 (PDT) Received: from relay1.server.ibm.com (relay1.server.ibm.com [9.14.2.98]) by smtp4.ny.us.ibm.COM (8.8.7/8.8.7) with ESMTP id VAA16660; Tue, 5 May 1998 21:20:12 -0400 Received: from US.IBM.COM (d03lms05.boulder.ibm.com [9.99.80.15]) by relay1.server.ibm.com (8.8.7/8.8.7) with SMTP id VAA54970; Tue, 5 May 1998 21:25:50 -0400 Received: by US.IBM.COM (Soft-Switch LMS 2.1.0.0) with snapi via D03AU047 id 5030050010781451; Tue, 5 May 1998 21:28:34 -0400 From: Johanna Greene To: :; Subject: *IBM Confidential: RE: Last lab Message-ID: <5030050010781451000002L512*@MHS> Date: Tue, 5 May 1998 21:28:34 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 2147 Ron, Gee... I ran all the examples in ch 5 of the Core Java, Vol II book, us= ing JDK 1.1.5, and I had no problems. What sort of problem did you have with rebind? Johanna __________________________________________ Business Intelligence Solutions, Santa Teresa Lab Phone: (408)463-4579 IBM Tie-Line: 8-543-4579 ---------------------- Forwarded by Johanna Greene/Santa Teresa/IBM on = 05/05/98 06:25 PM --------------------------- ron.su@tandem.com on 05/05/98 05:37:33 PM Please respond to ron.su@tandem.com To: ganz@llnl.gov, ron_garback@mlngw.chinalake.navy.mil, wschia@ecst.csuchico.edu, 7726401/TDM/COMPAQ@tandem.com, jim.steele@ben= tly.com, achung@sr.hp.com, Thiha Than/San Jose/IBM@IBMUS, anne.mackenzie@bently.= com, spuds@mackenzie.gardnerville.nv.us, david_paulson@hp.com, veasna@cv.hp.= com, Derek Carter/Santa Teresa/IBM@ibmus, wcannon@wco.com, wayne_cannon@hp.c= om, craigm@llnl.gov, tina@ndti.net, jloyd@hpbs972.boi.hp.com, holly.hayes@bently.com, jimd@center.uscs.com, trungn@hp-vcd.vcd.hp.com,= brianm@hprrc725.rose.hp.com, pam.ross@sunmail.chinalake.navy.mil, RicketsC@AV8BMX.chinalake.navy.mil, Marcia_Paulson@hp.com, 7718860/TDM/COMPAQ@tandem.com, Johanna Greene/Santa Teresa/IBM@ibmus, 7722607/TDM/COMPAQ@tandem.com, jeantt@sr.hp.com, wang@hpprsd1.sc.hp.com= , nhnguye@pacbell.com, csci397c-08@wombat.ecst.csuchico.edu, amk@ecst.csu= chico.edu cc: 7718860/TDM/COMPAQ@tandem.com Subject: RE: Last lab Hi folks, Download jdk1.1.6 and use it to do RMI stuff. Otherwise, the Naming.reb= ind() does not work using jdk1.1.5. Well, this is what I learned when I tried the WarehouseApplet example f= rom the CoreJavaBook. I may not need more extra points. But, I won't turn them down if you wa= nt to give me more. Thanks, Anne. Ron > Also, please feel free to share what you > are learning as you learn it...maybe we could give points for > the first submission of the most useful words of wisdom individuals > come up with - or the most potentially useful ideas (you know - > things you sit with for two days since you didn't know - when > someone else could see in a second since they have experienced it) :-= ) = From george.greene@TANDEM.com Wed May 06 01:39:03 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 26458 invoked from network); 5 May 1998 18:39:02 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 6 May 1998 01:39:02 -0000 Received: (qmail 21431 invoked by uid 1052); 5 May 1998 18:39:01 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 21423 invoked from network); 5 May 1998 18:39:00 -0700 Received: from fedex.austx.tandem.com (131.124.250.27) by gangrene.ecst.csuchico.edu with SMTP; 6 May 1998 01:39:00 -0000 Received: from excaus-conn01.austx.tandem.com (excaus-conn01.austx.tandem.com [131.124.250.55]) by fedex.austx.tandem.com (8.8.8/8.8.0) with ESMTP id UAA28849; Tue, 5 May 1998 20:29:05 -0500 (CDT) Received: by EXCAUS-CONN01 with Internet Mail Service (5.5.1960.3) id ; Tue, 5 May 1998 20:28:58 -0500 Message-ID: From: "Greene, George" To: "Su, Ron H" , "'Anne M. Keuneke'" , "'csci397c-08@wombat.ecst.csuchico.edu'" , "'nhnguye@pacbell.com'" , "'wang@hpprsd1.sc.hp.com'" , "'jeantt@sr.hp.com'" , "'greenejv@us.ibm.com'" , "'Marcia_Paulson@hp.com'" , "'RicketsC@AV8BMX.chinalake.navy.mil'" , "'pam.ross@sunmail.chinalake.navy.mil'" , "'brianm@hprrc725.rose.hp.com'" , "'trungn@hp-vcd.vcd.hp.com'" , "'jimd@center.uscs.com'" , "'holly.hayes@bently.com'" , "'jloyd@hpbs972.boi.hp.com'" , "'tina@ndti.net'" , "'craigm@llnl.gov'" , "'wayne_cannon@hp.com'" , "'wcannon@wco.com'" , "'dcarter@us.ibm.com'" , "'veasna@cv.hp.com'" , "'david_paulson@hp.com'" , "'spuds@mackenzie.gardnerville.nv.us'" , "'anne.mackenzie@bently.com'" , "'thiha@us.ibm.com'" , "'achung@sr.hp.com'" , "'jim.steele@bently.com'" , "Fung, Wilson" , "'wschia@ecst.csuchico.edu'" , "'ron_garback@mlngw.chinalake.navy.mil'" , "'ganz@llnl.gov'" Subject: RE: Last lab Date: Tue, 5 May 1998 20:28:56 -0500 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.1960.3) Content-Type: text/plain Status: RO Content-Length: 2246 My wife and I used jdk1.1.5 on 2 NT computers which are networked together with Ethernet cards, and the three exercises in chapter 5 of the 2nd edition of the Core Java book worked just fine. I discover one anomaly. If I was connected to the ibm.net, then the calls were satisfied much more quickly then if both of our machines were only networked together locally. If both machines were not connected to ibm.net, then it took what seemed to be several minutes for the calls to be satisfied. If I was patient enough and waited, then the programs did run to completion, without changes. George A. Greene -----Original Message----- From: Su, Ron H Sent: Tuesday, May 05, 1998 5:29 PM To: 'Anne M. Keuneke'; 'csci397c-08@wombat.ecst.csuchico.edu'; 'nhnguye@pacbell.com'; 'wang@hpprsd1.sc.hp.com'; 'jeantt@sr.hp.com'; Greene, George; 'greenejv@us.ibm.com'; Su, Ron H; 'Marcia_Paulson@hp.com'; 'RicketsC@AV8BMX.chinalake.navy.mil'; 'pam.ross@sunmail.chinalake.navy.mil'; 'brianm@hprrc725.rose.hp.com'; 'trungn@hp-vcd.vcd.hp.com'; 'jimd@center.uscs.com'; 'holly.hayes@bently.com'; 'jloyd@hpbs972.boi.hp.com'; 'tina@ndti.net'; 'craigm@llnl.gov'; 'wayne_cannon@hp.com'; 'wcannon@wco.com'; 'dcarter@us.ibm.com'; 'veasna@cv.hp.com'; 'david_paulson@hp.com'; 'spuds@mackenzie.gardnerville.nv.us'; 'anne.mackenzie@bently.com'; 'thiha@us.ibm.com'; 'achung@sr.hp.com'; 'jim.steele@bently.com'; Fung, Wilson; 'wschia@ecst.csuchico.edu'; 'ron_garback@mlngw.chinalake.navy.mil'; 'ganz@llnl.gov' Cc: Su, Ron H Subject: RE: Last lab Hi folks, Download jdk1.1.6 and use it to do RMI stuff. Otherwise, the Naming.rebind() does not work using jdk1.1.5. Well, this is what I learned when I tried the WarehouseApplet example from the CoreJavaBook. I may not need more extra points. But, I won't turn them down if you want to give me more. Thanks, Anne. Ron > Also, please feel free to share what you > are learning as you learn it...maybe we could give points for > the first submission of the most useful words of wisdom individuals > come up with - or the most potentially useful ideas (you know - > things you sit with for two days since you didn't know - when > someone else could see in a second since they have experienced it) :-) From jloyd@hpbs972.boi.hp.com Thu May 07 01:37:57 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 28040 invoked from network); 6 May 1998 18:37:56 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 7 May 1998 01:37:56 -0000 Received: (qmail 4620 invoked by uid 1052); 6 May 1998 18:37:54 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 4611 invoked from network); 6 May 1998 18:37:53 -0700 Received: from atlrel1.hp.com (156.153.255.210) by gangrene.ecst.csuchico.edu with SMTP; 7 May 1998 01:37:53 -0000 Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by atlrel1.hp.com (8.8.6/8.8.5tis) with SMTP id VAA14051; Wed, 6 May 1998 21:37:35 -0400 (EDT) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA05976; Wed, 6 May 1998 19:44:02 -0600 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD7926.7317CE20@hpb18347.boi.hp.com>; Wed, 6 May 1998 19:37:48 -0600 Message-Id: <01BD7926.7317CE20@hpb18347.boi.hp.com> From: Jerry Loyd To: "'amk@ecst.csuchico.edu'" , "Marcia_Paulson@hp.com" , "RicketsC@AV8BMX.chinalake.navy.mil" , "achung@sr.hp.com" , "anne.mackenzie@bently.com" , "brianm@hprrc725.rose.hp.com" To: "craigm@llnl.gov" , "csci397c-08@wombat.ecst.csuchico.edu" , "david_paulson@hp.com" , "dcarter@us.ibm.com" , "fung_wilson@tandem.com" , "george.greene@tandem.com" To: "greenejv@us.ibm.com" , "holly.hayes@bently.com" , "jeantt@sr.hp.com" , "jim.steele@bently.com" , "jimd@center.uscs.com" , "jloyd@hpbs972.boi.hp.com" To: "nhnguye@pacbell.com" , "pam.ross@sunmail.chinalake.navy.mil" , "ron.su@tandem.com" , "ron_garback@mlngw.ChinaLake.Navy.MIL" , "spuds@mackenzie.gardnerville.nv.us" , "thiha@us.ibm.com" To: "tina@ndti.net" , "trungn@hp-vcd.vcd.hp.com" , "veasna@cv.hp.com" , "wang@hpprsd1.sc.hp.com" , "wayne_cannon@hp.com" , "wcannon@wco.com" To: "wschia@ecst.csuchico.edu" Subject: RE: rmic and classpath Date: Wed, 6 May 1998 19:41:07 -0600 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Status: RO Content-Length: 2679 I managed to get the CoreJavaBook examples running, even with my = 'package' names in use. All I had to do was be sure to add "proj4." = (the name of my package) to the front of any program names they use in = the examples, and I use a Borland utility to set my classpath for me. = Shown below is the one it came up with. CLASSPATH=3D.;d:\JBuilder\lib\jbuilder.zip;d:\JBuilder\lib\jbcl.zip;d:\JB= uilder\li b\jgl.zip;d:\JBuilder\java\lib\classes.zip;d:\JBuilder\lib\jclass.zip;d:\= JBuilde r\lib\vbj30.jar;d:\JBuilder\samples;d:\JBuilder\myclasses;d:\JBuilder\myp= rojects ; Man, I don't think I really need all that stuff, but when I tried to set = the classpath stuff didn't work. -----Original Message----- From: amk@ecst.csuchico.edu [SMTP:amk@ecst.csuchico.edu] Sent: Wednesday, May 06, 1998 6:32 PM To: Marcia_Paulson@hp.com; RicketsC@AV8BMX.chinalake.navy.mil; = achung@sr.hp.com; anne.mackenzie@bently.com; = brianm@hprrc725.rose.hp.com; craigm@llnl.gov; = csci397c-08@wombat.ecst.csuchico.edu; david_paulson@hp.com; = dcarter@us.ibm.com; fung_wilson@tandem.com; george.greene@tandem.com; = greenejv@us.ibm.com; holly.hayes@bently.com; jeantt@sr.hp.com; = jim.steele@bently.com; jimd@center.uscs.com; jloyd@hpbs972.boi.hp.com; = nhnguye@pacbell.com; pam.ross@sunmail.chinalake.navy.mil; = ron.su@tandem.com; ron_garback@mlngw.ChinaLake.Navy.MIL; = spuds@mackenzie.gardnerville.nv.us; thiha@us.ibm.com; tina@ndti.net; = trungn@hp-vcd.vcd.hp.com; veasna@cv.hp.com; wang@hpprsd1.sc.hp.com; = wayne_cannon@hp.com; wcannon@wco.com; wschia@ecst.csuchico.edu Subject: Re: rmic and classpath <=20 < I'm trying to run the samples in the Core Java book, and running into = =3D < classpath problems with the rmic tool. <=20 < The examples in the book did not use 'packages', but I did. It wasn't = =3D < much of a problem to get rmic to create the ...Impl_Skel.class and =3D < ...Impl_Stub.class files. However, I guess I have no idea what it did = =3D < as far as package names are concerned for these classes. It seems no = =3D < matter where I put them in my directory, they just can't be found. <=20 < Has anyone else dealt with this, and has some advice to pass on? <=20 Rememebr in my notes about compiling the classes using: javac -d $HOME/public_html/codebase Hello.java HelloImpl.java = HelloApplet.java I had written that I had to put the compiled Hello.class into the Hello package first? I wonder if this problem is related. Has anyone detemined anything about this? The Hello example at=20 http://www.javasoft.com/products/jdk/1.2/docs/guide/rmi/getstart.doc.html= uses packages. Maybe you can see if you see a difference in what you=20 did. Anne From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Thu May 07 01:38:44 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 28138 invoked from network); 6 May 1998 18:38:42 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 7 May 1998 01:38:42 -0000 Received: (qmail 4713 invoked by uid 1052); 6 May 1998 18:38:39 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 4693 invoked from network); 6 May 1998 18:38:37 -0700 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by gangrene.ecst.csuchico.edu with SMTP; 7 May 1998 01:38:37 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id SAA27709 for CSCI397C-08-L; Wed, 6 May 1998 18:38:34 -0700 (PDT) Received: from Tandem.com (suntan.tandem.com [192.216.221.8]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id SAA27704 for ; Wed, 6 May 1998 18:38:29 -0700 (PDT) Received: from adm.loc1.tandem.com (adm.loc1.tandem.com [155.186.172.56]) by Tandem.com (8.8.8/2.0.1) with SMTP id RAA08213; Wed, 6 May 1998 17:51:11 -0700 (PDT) Received: from ronsu-nt by adm.loc1.tandem.com (SMI-8.6/6main.940209) id RAA11521; Wed, 6 May 1998 17:51:10 -0700 Received: by localhost with Microsoft MAPI; Wed, 6 May 1998 17:48:41 -0700 Message-ID: From: Ron Su Reply-To: "ron.su@tandem.com" To: "'amk@ecst.csuchico.edu'" , "Marcia_Paulson@hp.com" , "RicketsC@AV8BMX.chinalake.navy.mil" , "achung@sr.hp.com" , "anne.mackenzie@bently.com" , "brianm@hprrc725.rose.hp.com" To: "craigm@llnl.gov" , "csci397c-08@wombat.ecst.csuchico.edu" , "david_paulson@hp.com" , "dcarter@us.ibm.com" , "Fung, Wilson" , "Greene, George" To: "greenejv@us.ibm.com" , "holly.hayes@bently.com" , "jeantt@sr.hp.com" , "jim.steele@bently.com" , "jimd@center.uscs.com" , "jloyd@hpbs972.boi.hp.com" To: "nhnguye@pacbell.com" , "pam.ross@sunmail.chinalake.navy.mil" , "Su, Ron H" , "ron_garback@mlngw.ChinaLake.Navy.MIL" , "spuds@mackenzie.gardnerville.nv.us" , "thiha@us.ibm.com" To: "tina@ndti.net" , "trungn@hp-vcd.vcd.hp.com" , "veasna@cv.hp.com" , "wang@hpprsd1.sc.hp.com" , "wayne_cannon@hp.com" , "wcannon@wco.com" To: "wschia@ecst.csuchico.edu" Cc: "Su, Ron H" Subject: RE: rmic and classpath Date: Wed, 6 May 1998 17:51:05 -0700 Organization: Tandem Computers X-Mailer: Microsoft Internet E-mail/MAPI - 8.0.0.4211 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 1259 In http://www.javasoft.com/products/jdk/1.2/docs/guide/rmi/getstart.doc.htmlGen erate, under the section Stubs and Skeletons, there is the following line. When you use package, you have to run rmic from the package root and fully qualify the Impl class name with the package name. rmic -d $HOME/public_html/codebase examples.hello.HelloImpl Option -d is to put the rmic generated _Skel.class and _Stub.class files into the specified directory. During compilation, rmic is looking for the fully qualified name, which is examples.hello.HelloImpl, when you use "package examples.hello;" in your source code, as shown in this example. Ron On Wednesday, May 06, 1998 4:57 PM, amk@ecst.csuchico.edu [SMTP:amk@ecst.csuchico.edu] wrote: > > Rememebr in my notes about compiling the classes using: > > javac -d $HOME/public_html/codebase Hello.java HelloImpl.java > HelloApplet.java > > I had written that I had to put the compiled Hello.class into the > Hello package first? I wonder if this problem is related. Has > anyone detemined anything about this? > > The Hello example at > http://www.javasoft.com/products/jdk/1.2/docs/guide/rmi/getstart.doc.html > > uses packages. Maybe you can see if you see a difference in what you > did. > > Anne > p From the package root, I started the server and ran the appletviewer as the Status: RO Content-Length: 275 following commands. It worked without any problem. D:\csci397c-24\rmiCore>start rmiregistry D:\csci397c-24\rmiCore>start java WarehouseApplet.WarehouseServer D:\csci397c-24\rmiCore>appletviewer WarehouseApplet.html Hope this clarify the package mystery on rmic. :-) Ron From jloyd@hpbs972.boi.hp.com Sun May 10 17:50:10 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 11140 invoked from network); 10 May 1998 10:50:09 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 10 May 1998 17:50:09 -0000 Received: (qmail 1358 invoked by uid 1052); 10 May 1998 10:50:08 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 1350 invoked from network); 10 May 1998 10:50:07 -0700 Received: from atlrel1.hp.com (156.153.255.210) by gangrene.ecst.csuchico.edu with SMTP; 10 May 1998 17:50:07 -0000 Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by atlrel1.hp.com (8.8.6/8.8.5tis) with SMTP id NAA23184; Sun, 10 May 1998 13:49:50 -0400 (EDT) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA17800; Sun, 10 May 1998 11:56:38 -0600 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD7C09.C21444A0@hpb18347.boi.hp.com>; Sun, 10 May 1998 11:49:58 -0600 Message-Id: <01BD7C09.C21444A0@hpb18347.boi.hp.com> From: Jerry Loyd To: "'bapper@ecst.csuchico.edu'" Cc: "'amk@ecst.csuchico.edu'" Subject: RE: lab 3 Date: Sun, 10 May 1998 11:53:17 -0600 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Status: RO Content-Length: 4001 BAPper and Dr. Keuneke: So much for write-once, run anywhere... Let's see what we can do. A Few Points: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D * You won't be able to compile my code. It depends on many, many = classes that are part of the Borland JBuilder environment. You = shouldn't even try. If Borland went out of business, I could grab all = their class libaries and move them to a new environment, but we won't = bother with that right now. * I have no idea what JBuilder creates for menus - one uses their = graphical designer and it creates the code. I have no idea what it = creates, code-wise. Again, whatever it creates, it will not be useful = outside of the JBuilder environment. * Borland's JBuilder product has gotten a lot of industry recognition = for creating the most platform-independent JAVA code of any development = tool around - we can't turn this into a Sun vs. The World issue. My = first guess is that you are using jdk 1.1.5, and I am not. I can only = find references to jdk 1.1 in the documentation I have. Things I Have Verified Here: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D * The first big thing to be sure of is that I don't have something = special on my Win95 PC that makes the code run here and only here. =20 -> I downloaded the .jar file *from the chico site* onto a Windows NT = machine that has never had any JBuilder or any Sun jdk stuff on it, = ever;=20 -> then I installed the jdk 1.1.4 from the CoreJavaBook, and ran the = program. =20 -> I cannot connect to the database, of course, but I do see the dialogs = and main program screen. CONCLUSION: the .jar file is complete, not corrupted, and can run with = only the Sun jdk 1.1.4 installed. Things You Can Try There =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D * The following URL includes a "demo applet" written for project 2. = Connect to this URL, click on "Demo Applet" in the left-hand column, and = see if at least this will run on your machine. If it won't, there is no = hope the proj3 stuff will run as an application. = http://www.ecst.csuchico.edu/~jloyd/csci397c24/csci397proj2/BeansProject.= htm * Ask Dr. Keuneke if she was able to run and view my Project #1, the = Memory Management Simulator. That project has all the same ingredients = as this one: JBuilder, jdk 1.1.4, deployed as a .jar file, etc. If she = did see that one run (my grade would suggest she did...) then it might = not be too hard to figure out what is different on her computer. * Is there any way you can drop back to jdk 1.1.4? This is what came = in the Core Java Book, so it is what I have been testing with. We need = to eliminate as many variables as possible. I didn't even want to mess = things up by upgrading to a new jdk. Dr. Keuneke: Let's hope it's just jdk 1.1.5. I also hope you and = BAPper will remember the patience and effort that I demonstrated while = working through all the little details of this very difficult lab. Best regards, Jerry Loyd -----Original Message----- From: bapper@ecst.csuchico.edu [SMTP:bapper@ecst.csuchico.edu] Sent: Sunday, May 10, 1998 10:48 AM To: jloyd@hpbs972.boi.hp.com Subject: lab 3 When I try to run your lab 3, I get a blank screen for the connection dialog box. Just a blue background. I was not able to compile your source, either. It looked like you had a couple different versions on your site. Also, the menu.java file was incomplete (it didn't describe a class). So, I can't grade it until I can get it to run correctly. I was running it on a Sun box with JDK1.1.5. BAPper From jloyd@hpbs972.boi.hp.com Sun May 10 20:37:31 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 20668 invoked from network); 10 May 1998 13:37:31 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 10 May 1998 20:37:31 -0000 Received: (qmail 10578 invoked by uid 1052); 10 May 1998 13:37:30 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 10573 invoked from network); 10 May 1998 13:37:30 -0700 Received: from atlrel1.hp.com (156.153.255.210) by gangrene.ecst.csuchico.edu with SMTP; 10 May 1998 20:37:30 -0000 Received: from hpbs972.boi.hp.com (daemon@hpbs972.boi.hp.com [15.8.24.134]) by atlrel1.hp.com (8.8.6/8.8.5tis) with SMTP id QAA11032 for ; Sun, 10 May 1998 16:37:12 -0400 (EDT) Received: from hpb18347.boi.hp.com by hpbs972.boi.hp.com with SMTP (1.38.193.4/15.5+IOS 3.22) id AA18088; Sun, 10 May 1998 14:44:01 -0600 Received: by hpb18347.boi.hp.com with Microsoft Mail id <01BD7C21.25760B20@hpb18347.boi.hp.com>; Sun, 10 May 1998 14:37:24 -0600 Message-Id: <01BD7C21.25760B20@hpb18347.boi.hp.com> From: Jerry Loyd To: "'Anne Keuneke'" Subject: CLASSPATH on Windows platforms Date: Sun, 10 May 1998 14:40:40 -0600 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Status: RO Content-Length: 533 My hours and hours of experimentation have come to an end. I decided to grab the latest "jre", to see if I can re-create what = BAPper is seeing with my database project. I decide to read the = 'Readme' file. Right there, in big ol' letters, it says, "On Windows = platforms, the jre tool will ignore the CLASSPATH environment variable." I didn't verify that the 'java' command of the JDK would do the same, = but it seems to ignore CLASSPATH. I thought I was going crazy. The stupid books don't tell you that. Jerry Loyd From OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Mon May 18 18:58:34 1998 Return-Path: Delivered-To: amk@spam.ecst.csuchico.edu Received: (qmail 12192 invoked from network); 18 May 1998 11:58:30 -0700 Received: from gangrene.ecst.csuchico.edu (132.241.9.86) by spam.ecst.csuchico.edu with SMTP; 18 May 1998 18:58:30 -0000 Received: (qmail 12668 invoked by uid 1052); 18 May 1998 11:58:23 -0700 Delivered-To: amk@ecst.csuchico.edu Received: (qmail 12630 invoked from network); 18 May 1998 11:58:21 -0700 Received: from wombat.ecst.csuchico.edu (132.241.3.55) by gangrene.ecst.csuchico.edu with SMTP; 18 May 1998 18:58:21 -0000 Received: (from daemon@localhost) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) id LAA07046 for CSCI397C-08-L; Mon, 18 May 1998 11:58:19 -0700 (PDT) Received: from Tandem.com (suntan.tandem.com [192.216.221.8]) by wombat.ecst.csuchico.edu (8.8.2/8.8.2) with ESMTP id LAA07041 for ; Mon, 18 May 1998 11:58:10 -0700 (PDT) Received: from exccup-conn01.mis.tandem.com (exccup-conn01.mis.tandem.com [130.252.226.231]) by Tandem.com (8.8.8/2.0.1) with ESMTP id LAA05200; Mon, 18 May 1998 11:55:16 -0700 (PDT) Received: by exccup-conn01.mis.tandem.com with Internet Mail Service (5.5.1960.3) id ; Mon, 18 May 1998 11:55:10 -0700 Message-ID: From: "Greene, George" To: "'bapper@ecst.csuchico.edu'" , pberry@ecst.csuchico.edu Cc: spock@ecst.csuchico.edu, csci397c-08@wombat.ecst.csuchico.edu, nhnguye@pacbell.com, wang@hpprsd1.sc.hp.com, jeantt@sr.hp.com, george.greene@TANDEM.com, greenejv@us.ibm.com, ron.su@TANDEM.com, Marcia_Paulson@hp.com, RicketsC@AV8BMX.chinalake.navy.mil, pam.ross@sunmail.chinalake.navy.mil, brianm@hprrc725.rose.hp.com, trungn@hp-vcd.vcd.hp.com, jimd@center.uscs.com, holly.hayes@bently.com, jloyd@hpbs972.boi.hp.com, tina@ndti.net, craigm@llnl.gov, wayne_cannon@hp.com, wcannon@wco.com, dcarter@us.ibm.com, veasna@cv.hp.com, david_paulson@hp.com, spuds@mackenzie.gardnerville.nv.us, anne.mackenzie@bently.com, thiha@us.ibm.com, achung@sr.hp.com, jim.steele@bently.com, fung_wilson@TANDEM.com, wschia@ecst.csuchico.edu, ron_garback@mlngw.chinalake.navy.mil, ganz@llnl.gov Subject: RE: When a client simply closes connection... Date: Mon, 18 May 1998 11:55:08 -0700 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.1960.3) Content-Type: text/plain; charset="ISO-8859-1" Sender: OWNER-CSCI397C-08@wombat.ecst.csuchico.edu Status: RO Content-Length: 4157 A couple methods besides a setting a timer on the request comes to mind: 1) some programs send "I'm alive" messages. For example, a client could periodically send these messages to the server to let the server know that all is well. The server would then presumably check the timestamps for the latest transmission. It some threshold is reached, the server could assume that the client is dead, and do clean-up. (Going the other direction requires that the child service requests from the server. That might cause you to write significantly more code... depending ... but it is an option.) 2) When the client knows that it wants to quit, it could notify the server by calling some API provided by the server so that the server could do appropriate clean-up for that client, prior to the client killing itself. 3) In UNIX, the server could catch the SIGCHLD signal of a dying child process: for example, prior to forking the child process, you could sigprocmask( NULL, NULL, &savemask ); /* save original mask */ signal( SIGCHLD, my_signal_handler ); /* set signal handler */ where "void my_signal_handler( int signo )" of the parent process would get invoked when the child process dies. Use sigprocmask(( SIG_SETMASK, &savemask, NULL ); prior to exec() of the child process. You only want the parent to be notified of the child process death. Setting SIGCHLD for the child is of no value. You could look further into Java to see if Java allows anything along the lines of signal handling. I haven't done that research yet. Good luck! George -----Original Message----- From: bapper@ecst.csuchico.edu [SMTP:bapper@ecst.csuchico.edu] Sent: Monday, May 18, 1998 11:32 AM To: pberry@ecst.csuchico.edu Cc: spock@ecst.csuchico.edu; csci397c-08@wombat.ecst.csuchico.edu; nhnguye@pacbell.com; wang@hpprsd1.sc.hp.com; jeantt@sr.hp.com; george.greene@tandem.com; greenejv@us.ibm.com; ron.su@tandem.com; Marcia_Paulson@hp.com; RicketsC@AV8BMX.chinalake.navy.mil; pam.ross@sunmail.chinalake.navy.mil; brianm@hprrc725.rose.hp.com; trungn@hp-vcd.vcd.hp.com; jimd@center.uscs.com; holly.hayes@bently.com; jloyd@hpbs972.boi.hp.com; tina@ndti.net; craigm@llnl.gov; wayne_cannon@hp.com; wcannon@wco.com; dcarter@us.ibm.com; veasna@cv.hp.com; david_paulson@hp.com; spuds@mackenzie.gardnerville.nv.us; anne.mackenzie@bently.com; thiha@us.ibm.com; achung@sr.hp.com; jim.steele@bently.com; fung_wilson@tandem.com; wschia@ecst.csuchico.edu; ron_garback@mlngw.chinalake.navy.mil; ganz@llnl.gov Subject: Re: When a client simply closes connection... > > On Sun, May 17, 1998 at 08:00:50PM -0700, Adam D. Bertsch wrote: > > Is there any way for a server to know when the client just closes > > the connection? If the client dies unexpectedly, how can the > > server tell that the socket has been closed? This is just using > > simple java sockets. > > 1) Try writing to the output stream, when it fails you know something > is wrong ;-) > > 2) You should have a timeout set on the socket, so the program doesn't > hang in this sort of situation. The Java Networking book I horked > from Anne suggests a "reasonable amount of time" for the timeout ;-) > I don't know about Java, but in Unix if the client hangs up the connection for whatever reason, the server socket (on the server) is ready for read. When you read from it and read returns zero bytes, you know the client is gone. BAPper 7C course for me for next semester. >It will be by faculty invitation only - I have a group of >about 5 students doing an independent study with me. >I had done this in Fall 96 when I was on sabbatical but >I don't remember the paperwork. I do know it has to be >a course rather than independent study so they get a grade. > >thanks >Anne > ************************************ * Dr. Melody Callan, Chair * * Department of Computer Science * * CSU, Chico * * Chico, California 95929-0410 * * Voice: (916) 898-6442 * * Fax: (916) 898-5995 * * Email: melody@ecst.csuchico.edu * ************************************