Java Fundamental

Hi!,
I have one very basic question.
Java passes all parameters except literals by reference. right!
So why doesn't the change in a function to one such parameter after its value when I print it outside the function?
eg.
I have a function copyElement(DefaultMutableTreeNode node1, DTMN node2)
node2=(DTMN)node1.clone();
and the place where I call it
I first create
DTMN node1=new DTMN("NODE1");
DTMN node2=new DTMN("NODE2");
copy(node1,node2)
then when I print node2, it still shows me NODE2
This is because clone returns a new ref. pointer, which will be lost once it comes out of the function.
So is there a way by which I can create an object outside the function,a dn in the function assign it a value.
Or am I totally on the wrong track???
thanks

Perhaps it would be clearer to you if you wrote it like this:public void copyElement( Object nodeX, Object nodeY )
    nodeY = nodeX.clone();
public void test()
    Object node1 = new String( "NODE1" );
    Object node2 = new String( "NODE2" );
    copy( node1, node2 );
}Changing what the variable nodeY points in your copyElement method does not impact what the variable node2 points to. You are reassinging the object that nodeY referes to but this does not change the object that node2 refers to. You are not altering the actual object that is being passed to copy (although you could), rather you are just reassigning the variable reference nodeY, but the scope of that variable is only within the copy method.
Perhaps a better way to write your method would be:public Object copyElement( Object nodeX )
    Object nodeY = nodeX.clone();
    return nodeY;
public void test()
    Object node1 = new String( "NODE1" );
    Object node2 = copyElement( node1 );
}

Similar Messages

  • Basic Java Concepts

    I'm a Java novice, trying to learn it along with Jdeveloper side by side. My learning of the Java fundamental concepts led to the below understanding, please see if my understanding is not correct in any way.
    The fundamental concept with Java is a CLASS, whose feature are its state and behaviour. The state of the class is stored in the definition of the class itself via ATTRIBUTES or in lay man's language VARIABLES. These attributes can be static, public, private or protectd.
    The behaviour of a class is stored via METHODS within the definition of a class. METHOD is nothing but a block of code performaing a certain action.
    A good example of a CLASS's state a behaviour can be a stock. A stocks state is available via its ticker symbol, price of the stock, and the date i.e. on a given date, a given stock has a particular price. So there are 3 attributes.
    Now METHOD in the context of the above example is a means to capture the ever changing state of the above 3 attributes.
    In short attributes or fields ( defined via declaration of variables inside the class) capture the state of an object, where as its interaction with the world external to the object captured by METHOD.
    These 3 attributes are common to thousands of stock's in the outside market, so a common class called STOCK can be created to capture the state and behaviour of thousands of stocks. The same class can be called at the same time to capture the behaviour of N number of stocks. When a class is called as explained, each such call is called an INSTANCE of the CLASS. An OBJECT is an instance of SUCH a class.
    Similar to CLASS is INTERFACE. A given class can only call the attributes and methods from one another class. If a class needs to inherit from more than one another class then it is accomplished via an INTERFACE. An Interface contains only the spec of the methods from other classes and not the entire piece of code for he method itself. The methods that are declared in the interface are implemented in the classes to which they belong to.
    A PACKAGE in turn is a collected of CLASSES and INTERFACES. A PACKAGE helps in keeping the code oraganized and grouped by the functionaliy it delivers.
    A Class can in turn be either a SUPERCLASS or a SUBCLASS. In our given example CLASS, there are some stocks which offer OPTIONS and some which do not. In order to cover that behaviours we will like to create sub class called STOCSKWITHOPTIONS, which will then refer to STOCK class to inherit the attributes and methods from that class. In this case STOCK is the SUPERCLASS, and STOCKOPTIONS is the SUBCLASS.
    Thanks in advance

    Nagarjuna,
    there is an excellent tutorial series from Sun for basic and advanced Java features. It contains a lot of examples and explains every concept. You even download the tutorials.
    See http://java.sun.com/javase/reference/tutorials.jsp
    --olaf                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Servlet deployment problem

    hi all,
    i first post in java fundamental then i realize it should be in servlet sorry if u ppl suppose it repeated.
    i have a problem about which i search lot but didnt find any answer.
    i made an servlet and deploy it in tomcat.
    My directory structure is according to standard under midp folder. In my web.xml under WEB-INF/classes
    i wrote
    <web-app>
    <servlet>
    <servlet-name>bob</servlet-name>
    <servlet-class>HitServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>bob</servlet-name>
    <url-pattern>/hits</url-pattern>
    </servlet-mapping>
    </web-app>
    and acces it with http://localhost:8080/midp/hits
    it says hits not avaiable
    but when i change this section
    <servlet-mapping>
    <servlet-name>bob</servlet-name>
    <url-pattern>/servlet/HitServlet</url-pattern>
    </servlet-mapping>
    and access http://localhost:8080/midp/servlet/HitServlet
    it works.
    i cant understand y this happen bcz i wanna access it like
    http://localhost:8080/midp/hits
    what should i have to do?
    plz help me.

    Uh, you said that your web.xml is under /WEB-INF/classes? That's not the right place, it goes under /WEB-INF/.
    But...to answer your question, I see nothing wrong with your servlet and servlet mapping entries. A test on one of my apps worked perfectly.
    What App Server are you running? Did you stop it, redeploy, then restart it and then access the page?
    There's something else going on, because there's nothing wrong with your mapping.

  • Small bug and fix starting SQL Developer on Mac OS X

    I couldn't find anyone else mentioning this so I'll write it in.
    If I started SQL Developer in one user I couldn't start it again in another user, even after quitting out of the first. I would double click the icon and it would do the animated "zoom" but then nothing.
    I tracked it down to a problem in SQLDeveloper.app/Contents/MacOS/sqldeveloper.sh. When it redirects the output of the call to the start scipt in the /sqldeveloper/bin directory it would fail because the /tmp/sqldeveloper-startup.log was owned by the first user to start the App (since the /tmp was cleared anyway). My umask didn't give it permission to start overwriting that file.
    To fix it I changed the last line in SQLDeveloper.app/Contents/MacOS/sqldeveloper.sh to:
    bash ./sqldeveloper >/tmp/sqldeveloper-startup.$$.log
    so that the PID was now part of the name and each initiation of SQL Developer would have its own.
    You could also change the last line to:
    bash ./sqldeveloper >$(mktemp /tmp/sqldeveloper-startup.log.XXXXX)
    which would guarantee more uniqueness but wouldn't let you know which process was using the file.
    Savvy Mac users can edit the script themselves by right-clicking on the SQLDeveloper.app and selecting "Show Package Contents". You may have to temporarily change the file permissions to let you edit it.
    For the record I'm running SQL Developer 1.2.0 on a Mac TiBook G4 867MHz with Mac OS X 10.4.10 and 1Gb RAM (and it is still maddeningly slow because Java fundamentally sucks).
    -Bion

    Ok - I think I found it.
    Go into ~/Library/Application Support/SQL Developer/system1.5.3.57.83/o.ide.11.1.1.0.22.49.44 (or similar for whatever version you're running) and edit the settings.xml file there.
    Look for a block that looks like:
    <Item class="oracle.javatools.util.Pair">
    <first class="java.lang.String">delete-previous</first>
    <second class="oracle.ide.keyboard.KeyStrokes">
    <data>
    <Item class="javax.swing.KeyStroke">[0]</Item>
    </data>
    </second>
    </Item>
    and change it to:
    <Item class="oracle.javatools.util.Pair">
    <first class="java.lang.String">delete-previous</first>
    <second class="oracle.ide.keyboard.KeyStrokes">
    <data>
    <Item class="javax.swing.KeyStroke">[8]</Item>
    </data>
    </second>
    </Item>
    I'm not sure why, but this file seems to always contain the incorrect keystroke value when I do a fresh install of SQL Developer. I always have to go in and change that value by hand. I've tried choosing any number of the accelerator presets, but none of them make the delete key work.

  • Fundamental flaws in Java Server Faces

    Fundamental flaws in Java Server Faces (JSF)
    After working with Struts framework for many years I wanted to try something new and decided to investigate JSF. I was very impressed with my initial evaluation and recently used it in one of my project. Middle of the project I released many glaring issue with the framework and had to break my head to complete the project on time.
    One of the major reasons why I choose JSF was that it had a clean way of mapping a form to a bean(s) and a nice way to perform form actions and navigation between forms.
    Although the framework is very promising in many ways, I think the framework is not yet complete and the developer has to fix lot of holes to make the application to work properly.
    Following are the glaring functionality that is missing or confusing or messed up in JSF.
    1)     JSF does not provide a way to disable PROCESS_VALIDATION phase. For some reason if one wants to skip one phase another, JSF has made it near to impossible to skip.
    2)     The framework does not provide an easy way to invoke an action method directly by calling a URL (Similar to Struts action method invocation). This is very essential because many/most of the time one needs to check the authorizations of the user to view a page.
    3)     JSF does not support form GET method. They are giving all sorts of reasons not to do this. It�s practically very difficult to develop an application with just POST operations.
    4)     There should be an easy way for the developer to tell JSF not to copy the request to the backing bean or at least skip the event phase that copies the request to the backing bean.
    5)     JSF does many operations in each phases. JSF should not overload multiple operations in one phase. Custom validation should be separated from native framework validation. Calling a command button with immediate set to true should be a separate phase event. This should not be mixed with other operation.
    6)     It is very difficult or near to impossible to programmatically unit test JSF application. I don�t know what they thought when they developed this framework. Dude�s we are in the TDD time period, not 4GL.
    7)     In my opinion one or more backing beans can be linked to a page and a page can be made up of one or more jsp�s. The fundamental flaw with the JSF is that JSF tries to dynamically map a jsp collection to beans. I don�t know who decided this model. They should have implemented such that the user in the faces xml or dynamically say what beans maps to a jsp page. Then they can copy the request objects to the bean and then do other stuff. This way the framework will give lot of control to the developer. In my opinion, if they have to do this then they will have to implement the �struts� action controller framework and then extend the JSF framework on top of it.
    8)     The framework has some piece of implementation very easy like mapping the bean to the form and command actions and the others near to impossible to understand or make it to work.
    I am surprised to see big players like IBM and Oracle backing this product. What I don�t understand is why? What are they betting for?
    Anyway, I will definitely keep an eye on the JSF progress. But for now, let me take care of my bum. It was a bumpy ride working with JSF framework.

    I am not very experience or expert in jsf...
    But i would like share my thought/ answer on this issue.
    1) JSF does not provide a way to disable PROCESS_VALIDATION phase. For some reason if one wants to skip one phase another, JSF has made it near to impossible to skip.
    - YES.....jsf make it impossible to disable validation. But it does make it possible to skip some validation with immediate attribute. Anyway..based on My experienc working on immediate attribute.....it was not so easy/flexible to skip the validation as compared to struts..
    2) The framework does not provide an easy way to invoke an action method directly by calling a URL (Similar to Struts action method invocation). This is very essential because many/most of the time one needs to check the authorizations of the user to view a page.
    -I am not sure about this.......But i personally think jsf does not provide this functionality.
    3) JSF does not support form GET method. They are giving all sorts of reasons not to do this. It�s practically very difficult to develop an application with just POST operations.
    - YES....I personally also feel that this is a BIG disadvantage...
    4) There should be an easy way for the developer to tell JSF not to copy the request to the backing bean or at least skip the event phase that copies the request to the backing bean.
    - YES...agreed.....jsf should make this easier..
    5) JSF does many operations in each phases. JSF should not overload multiple operations in one phase. Custom validation should be separated from native framework validation. Calling a command button with immediate set to true should be a separate phase event. This should not be mixed with other operation.
    - No comment..
    6) It is very difficult or near to impossible to programmatically unit test JSF application. I don�t know what they thought when they developed this framework. Dude�s we are in the TDD time period, not 4GL.
    7) In my opinion one or more backing beans can be linked to a page and a page can be made up of one or more jsp�s. The fundamental flaw with the JSF is that JSF tries to dynamically map a jsp collection to beans. I don�t know who decided this model. They should have implemented such that the user in the faces xml or dynamically say what beans maps to a jsp page. Then they can copy the request objects to the bean and then do other stuff. This way the framework will give lot of control to the developer. In my opinion, if they have to do this then they will have to implement the �struts� action controller framework and then extend the JSF framework on top of it.
    - No really understand what u trying to say...But I dun think this should be a isssue...
    8) The framework has some piece of implementation very easy like mapping the bean to the form and command actions and the others near to impossible to understand or make it to work.
    - What is the "other" mean???

  • Fundamental Networking in Java - book announcement

    Announcing the publication of my new book Fundamental Networking in Java, Springer-Verlag, aimed squarely & with thanks at all denizens of this forum and at Java network programmers everywhere.
    Scope: everything you can do with a Socket.
    See http://www.springeronline.com/1-84628-030-3 or http://www.amazon.com/exec/obidos/ASIN/1846280303/qid%3D1128330433/sr%3D11-1/ref%3Dsr%5F11%5F1/102-2579331-3845735

    Many congratulations on your book.
    Writing a technical book is something I'd very much like to do myself one day and I have great admiration for those who put in the time and effort to achieve it.
    Im going to order it now.
    ~D.

  • Fundamental questions in Java, please help to answer.

    I am a beginner of a Java Programming. Although I had few programming experiences on Java. But there are few conceptal questions. Hope every experts can help to explain more to me.
    1. How <b>Encapsulation</b> works in Java? Why is it needed? What benefits can be given from encapsulation? Can give some examples for me to know more?
    2. How <b>Overloading</b> works in Java? Why is it needed? What benefits can be given from it in the extensibility of programs? Can give some examples for me to know more?
    3. How <b>inheritance</b> works in Java? What benefits can be given from inheritance? Can give further explanation, such as class hierarchy for me to know more?
    4. What is <i>object class</i> and <i>object distances</i> ? What is their differences?
    5. What is <b>Reusability</b>? What benefits can it gives? Why it is needed? Can give me further examples?
    Thanks for help very much

    Maybe I'm not getting this, but you want one of us to give you a nice short answer convenient enough for you to copy down, right? Well, there aren't many people here that are willing to do that. There are many people who won't even bother answering homework questions. I don't mind, but you need to show us some work you've done, like the previous poster said. The effort has to come from you, not us. If you are learning Java, you must put some effort into it.
    How can you get an answer out of us?
    Example: I understand that inheritance is ..............., but I'm not sure about this part.............. Can anyone provide some clarification please?
    Anyway, this question has been crossposted on at least 5 forums already, which I'm sure is one of the reasons people aren't bothering with this question. Please DO NOT CROSSPOST, it's considered poor forum etiquette.
    Please don't take anything that I said negatively, but you have to understand that we are taking our time to respond to your queries, and asking us to provide short answers without doing any work on your part, and crossposting is not going to get you answers out of us.
    Cheers

  • Problem Launching Java Applet with Plug-in: Version 1.4.2_01

    Hello out there:
    I recently installed j2re-1.4.2_01 on my home computer but have been unable to access Web sites emmploying JAva applets. The following is an email exchange with Jeff Hall of Lowell Observatory, manager of an educational site hosted by Lowell, trying to resolve my problem. The messages are better understood if read in reverse order.
    I'm hoping that someone will recognize the source of my problem and can recommmend a solution. I would appreciate any help offered.
    Thanks,
    Mike Coucke
    Hi Jeff:
    Well, I guess the problem lies with me somewhere. Here's my answer/status to your questions/suggestions:
    1) I'm using MS Windows Me version 4.90.3000
    2) I do have the directory C:\Windows\.jpi_cache\jar\, but the only thing in it is an empty folder labeled "1.0". The file LP.jar does not exist anywhere on my hard drive.
    3) I tried several game sites that utilized Java applets and got the same results: the Java cup in the upper left corner followed a few seconds later by the red "X". So, evidently the problem is somewhere on my end.
    I'm going to post our email exchanges in a Java Users Forum managed by Sun to see if anyone out there can solve my problem. However, if you have any more suggestions, I'll be glad to try them.
    Thanks for the help.
    Mike Coucke
    [email protected]
    ----- Original Message -----
    From: "Jeffrey Hall" <[email protected]>
    To: "'Mike Coucke'" <[email protected]>
    Sent: Friday, September 05, 2003 1:02 PM
    Subject: RE: Registration with Lowell Education Online
    Mike,
    Rats! What version of Windows are you using? It's a little strange to
    see the user directory set to C:\Windows; if you're using XP, I'd expect
    it to be something like C:\Documents and Settings\Mike Coucke. In any
    event, the output that is of concern is these two lines:
    java.lang.ClassNotFoundException: LPRemote.class
    Caused by: java.net.UnknownHostException: proxy
    It looks like your browser is not finding our server's IP when it comes
    time to download the necessary Java code.
    LPRemote.class is the fundamental code that runs LOPARC, and your
    browser should be downloading it automatically when you click connect.
    LPRemote.class is stored along with a bunch of other classes in a file
    called "LP.jar" that you download from our server. So, if you go to C:
    in Windows Explorer and do a file search for LP.jar, you should find it.
    On my machine, it's stored in a directory called ".jpi_cache\jar\" in my
    user home directory. Let me know if you have this file, or the
    jpi-cache directory.
    One other thing you might try is going to a different site that you know
    uses Java applets -- I think some of the online game rooms at Yahoo use
    Java. See if other sites that use Java load correctly. Then we'll know
    if it's our server specifically, or a more general problem on your end.
    Jeff Hall
    Lowell Observatory
    Hello Jeff:
    I still have the Java "blues". I followed your instructions, but am still unable to launch a LOPARC session. After an initial failure, I uninstalled all three Java versions I had (1.4.0, 1.4.1, 1.4.2), then reinstalled 1.4.2_01 from the Sun website.
    Now, when I try to launch LOPARC, I initially get a blank window with the Java cup in the upper left corner. After about 20 seconds, the cup changes to a red "X". During those 20 seconds, the following appear in the IE message bar at the bottom of the window: "Applet LPRemote notinited" (their spelling) which changes to "Loading Java Applet Failed..." when the red "X" appears.
    Following is a copy of the log from my Java Console during all of this:
    Java(TM) Plug-in: Version 1.4.2_01
    Using JRE version 1.4.2_01 Java HotSpot(TM) Client VM
    User home directory = C:\WINDOWS
    Proxy Configuration: Manual Configuration
    Proxy: http=proxy,https=proxy,ftp=proxy,gopher=proxy
    Proxy Overrides:
    c: clear console window
    f: finalize objects on finalization queue
    g: garbage collect
    h: display this help message
    l: dump classloader list
    m: print memory usage
    o: trigger logging
    p: reload proxy configuration
    q: hide console
    r: reload policy configuration
    s: dump system properties
    t: dump thread list
    v: dump thread stack
    x: clear classloader cache
    0-5: set trace level to <n>
    load: class LPRemote.class not found.
    java.lang.ClassNotFoundException: LPRemote.class
    at sun.applet.AppletClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.applet.AppletClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.applet.AppletClassLoader.loadCode(Unknown Source)
    at sun.applet.AppletPanel.createApplet(Unknown Source)
    at sun.plugin.AppletViewer.createApplet(Unknown Source)
    at sun.applet.AppletPanel.runLoader(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    Caused by: java.net.UnknownHostException: proxy
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at sun.net.NetworkClient.doConnect(Unknown Source)
    at sun.plugin.net.protocol.http.HttpClient.doConnect(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.net.www.http.HttpClient.privilegedOpenServer(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient.<init>(Unknown Source)
    at sun.net.www.http.HttpClient.<init>(Unknown Source)
    at sun.plugin.net.protocol.http.HttpClient.<init>(Unknown Source)
    at sun.plugin.net.protocol.http.HttpClient.New(Unknown Source)
    at sun.plugin.net.protocol.http.HttpURLConnection.createConnection(Unknown Source)
    at sun.plugin.net.protocol.http.HttpURLConnection.connect(Unknown Source)
    at sun.plugin.net.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.net.HttpURLConnection.getResponseCode(Unknown Source)
    at sun.applet.AppletClassLoader.getBytes(Unknown Source)
    at sun.applet.AppletClassLoader.access$100(Unknown Source)
    at sun.applet.AppletClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    ... 10 more
    I followed this up by executing the following three console commands:
    "dump system properties"
    "dump classholder list"
    "dump thread list"
    and obtained the following listings:
    Dump system properties ...
    acl.read = +
    acl.read.default =
    acl.write = +
    acl.write.default =
    application.home = C:\PROGRA~1\JAVA\J2RE14~1.2_0
    awt.toolkit = sun.awt.windows.WToolkit
    browser = sun.plugin
    browser.vendor = Sun Microsystems, Inc.
    browser.version = 1.1
    deployment.javaws.cache.dir = C:\WINDOWS\.javaws\cache
    deployment.javaws.jre.0.enabled = true
    deployment.javaws.jre.0.location = http://java.sun.com/products/autodl/j2se
    deployment.javaws.jre.0.osarch = x86
    deployment.javaws.jre.0.osname = Windows
    deployment.javaws.jre.0.path = C:\Program Files\Java\j2re1.4.2_01\bin\javaw.exe
    deployment.javaws.jre.0.platform = 1.4
    deployment.javaws.jre.0.product = 1.4.2_01
    deployment.javaws.jre.0.registered = true
    deployment.javaws.version = javaws-1.4.2_01
    deployment.system.cacerts = C:\PROGRA~1\JAVA\J2RE14~1.2_0\lib\security\cacerts
    deployment.system.home = C:\WINDOWS\Sun\Java\Deployment
    deployment.system.jssecacerts = C:\PROGRA~1\JAVA\J2RE14~1.2_0\lib\security\cacerts
    deployment.system.profile = C:\WINDOWS
    deployment.system.security.policy = file:/C:/WINDOWS/Sun/Java/Deployment/security/java.policy
    deployment.user.cachedir = C:\WINDOWS\Application Data\Sun\Java\Deployment\cache
    deployment.user.certs = C:\WINDOWS\Application Data\Sun\Java\Deployment\security\deployment.certs
    deployment.user.extdir = C:\WINDOWS\Application Data\Sun\Java\Deployment\ext
    deployment.user.home = C:\WINDOWS\Application Data\Sun\Java\Deployment
    deployment.user.jssecerts = C:\WINDOWS\Application Data\Sun\Java\Deployment\security\deployment.jssecerts
    deployment.user.logdir = C:\WINDOWS\Application Data\Sun\Java\Deployment\log
    deployment.user.profile = C:\WINDOWS\Application Data
    deployment.user.security.policy = file:/C:/WINDOWS/Application%20Data/Sun/Java/Deployment/security/java.policy
    deployment.user.tmpdir = C:\WINDOWS\Application Data\Sun\Java\Deployment\cache\tmp
    file.encoding = Cp1252
    file.encoding.pkg = sun.io
    file.separator = \
    file.separator.applet = true
    http.agent = Mozilla/4.0 (Windows Me 4.90)
    http.auth.serializeRequests = true
    https.protocols = SSLv3,SSLv2Hello
    java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
    java.awt.printerjob = sun.awt.windows.WPrinterJob
    java.class.path = C:\PROGRA~1\JAVA\J2RE14~1.2_0\classes
    java.class.version = 48.0
    java.class.version.applet = true
    java.endorsed.dirs = C:\PROGRAM FILES\JAVA\J2RE1.4.2_01\lib\endorsed
    java.ext.dirs = C:\PROGRAM FILES\JAVA\J2RE1.4.2_01\lib\ext
    java.home = C:\PROGRA~1\JAVA\J2RE14~1.2_0
    java.io.tmpdir = C:\WINDOWS\TEMP\
    java.library.path = D:\PROGRAM FILES\INTERNET EXPLORER 6;.;C:\WINDOWS\SYSTEM;C:\WINDOWS;D:\PROGRA~1\INTERN~1;;C:\WINDOWS;C:\WINDOWS\COMMAND
    java.protocol.handler.pkgs = sun.plugin.net.protocol|sun.plugin.net.protocol
    java.runtime.name = Java(TM) 2 Runtime Environment, Standard Edition
    java.runtime.version = 1.4.2_01-b06
    java.specification.name = Java Platform API Specification
    java.specification.vendor = Sun Microsystems Inc.
    java.specification.version = 1.4
    java.util.prefs.PreferencesFactory = java.util.prefs.WindowsPreferencesFactory
    java.vendor = Sun Microsystems Inc.
    java.vendor.applet = true
    java.vendor.url = http://java.sun.com/
    java.vendor.url.applet = true
    java.vendor.url.bug = http://java.sun.com/cgi-bin/bugreport.cgi
    java.version = 1.4.2_01
    java.version.applet = true
    java.vm.info = mixed mode
    java.vm.name = Java HotSpot(TM) Client VM
    java.vm.specification.name = Java Virtual Machine Specification
    java.vm.specification.vendor = Sun Microsystems Inc.
    java.vm.specification.version = 1.0
    java.vm.vendor = Sun Microsystems Inc.
    java.vm.version = 1.4.2_01-b06
    javaplugin.maxHeapSize = 96m
    javaplugin.nodotversion = 142_01
    javaplugin.proxy.config.list = http=proxy,https=proxy,ftp=proxy,gopher=proxy
    javaplugin.proxy.config.type = manual
    javaplugin.version = 1.4.2_01
    javaplugin.vm.options = -Djava.class.path=C:\PROGRA~1\JAVA\J2RE14~1.2_0\classes -Xbootclasspath/a:C:\PROGRA~1\JAVA\J2RE14~1.2_0\lib\plugin.jar -Xmx96m -Djavaplugin.maxHeapSize=96m -Xverify:remote -Djavaplugin.version=1.4.2_01 -Djavaplugin.nodotversion=142_01 -Dbrowser=sun.plugin -DtrustProxy=true -Dapplication.home=C:\PROGRA~1\JAVA\J2RE14~1.2_0 -Djava.protocol.handler.pkgs=sun.plugin.net.protocol
    line.separator = \r\n
    line.separator.applet = true
    os.arch = x86
    os.arch.applet = true
    os.name = Windows Me
    os.name.applet = true
    os.version = 4.90
    os.version.applet = true
    package.restrict.access.netscape = false
    package.restrict.access.sun = true
    package.restrict.definition.java = true
    package.restrict.definition.netscape = true
    package.restrict.definition.sun = true
    path.separator = ;
    path.separator.applet = true
    sun.arch.data.model = 32
    sun.boot.class.path = C:\PROGRAM FILES\JAVA\J2RE1.4.2_01\lib\rt.jar;C:\PROGRAM FILES\JAVA\J2RE1.4.2_01\lib\i18n.jar;C:\PROGRAM FILES\JAVA\J2RE1.4.2_01\lib\sunrsasign.jar;C:\PROGRAM FILES\JAVA\J2RE1.4.2_01\lib\jsse.jar;C:\PROGRAM FILES\JAVA\J2RE1.4.2_01\lib\jce.jar;C:\PROGRAM FILES\JAVA\J2RE1.4.2_01\lib\charsets.jar;C:\PROGRAM FILES\JAVA\J2RE1.4.2_01\classes;C:\PROGRA~1\JAVA\J2RE14~1.2_0\lib\plugin.jar
    sun.boot.library.path = C:\PROGRAM FILES\JAVA\J2RE1.4.2_01\bin
    sun.cpu.endian = little
    sun.cpu.isalist = pentium i486 i386
    sun.io.unicode.encoding = UnicodeLittle
    sun.java2d.fontpath =
    sun.net.client.defaultConnectTimeout = 120000
    sun.os.patch.level =
    trustProxy = true
    user.country = US
    user.dir = C:\WINDOWS\Desktop
    user.home = C:\WINDOWS
    user.language = en
    user.name = Michael G. Coucke
    user.timezone =
    user.variant =
    Done.
    Dump classloader list ...
    codebase=http://kraken.lowell.edu/, key=http://kraken.lowell.edu/,IONJava/classes/ion_16.jar,IONJava/classes/LP.jar, zombie=false, cache=true, refcount=1, info=sun.plugin.ClassLoaderInfo@109de5b
    Done.
    Dump thread list ...
    Group main,ac=11,agc=2,pri=10
    main,5,alive
    AWT-Windows,6,alive,dameon
    AWT-Shutdown,5,alive
    Java2D Disposer,10,alive,dameon
    AWT-EventQueue-0,6,alive
    Group Plugin Thread Group,ac=3,agc=0,pri=10
    Main Console Writer,6,alive
    AWT-EventQueue-1,6,alive
    TimerQueue,5,alive,dameon
    Group http://kraken.lowell.edu/-threadGroup,ac=2,agc=0,pri=4
    thread applet-LPRemote.class,4,alive
    AWT-EventQueue-2,4,alive
    Done.
    I'm not a Java expert, so this may be more information than you ever wanted to see.
    Once again, I hope that you can help. My experience has been that I usually have some obscure option set incorrectly and that causes me great grief.
    Thanks fo your help,
    Mike Coucke
    [email protected]
    ----- Original Message -----
    From: "Jeffrey Hall" <[email protected]>
    To: "'Mike Coucke'" <[email protected]>
    Sent: Thursday, September 04, 2003 11:48 AM
    Subject: RE: Registration with Lowell Education Online
    Hi Mike,
    Try it now. I think this problem has arisen because Sun just
    released a new version of the Plug-in (1.4.2), and when we released the
    public beta of LOPARC, only one relevant version (1.4.0) was available
    and the LOPARC code was written to look for that by default. I have
    just recoded the relevant routines so they should now cause your browser
    to simply pick up the latest 1.4 version of the Plug-in you have
    installed, whatever it is. I "broke" Java on my machine to replicate
    your problem, and the code I inserted today did fix it. Hopefully it
    will have the same effect for you. I am running IE 6 and plugin
    1.4.2_01 (as accessed via Tools->Sun Java Console).
    One broader problem: some (non-LOPARC-specific) users on the Sun
    forums have reported the "JRE collision" you are seeing when multiple
    versions of the Plug-in are installed on the same machine. So if the
    fix I made to our code doesn't work, one option would be to uninstall
    all Java components from your computer and do a fresh install of the
    latest runtime environment.
    Let me know how/if this works. Thanks for the feedback and for your
    patience.
    Best regards,
    Jeff Hall
    Lowell Observatory
    -----Original Message-----
    From: Mike Coucke [mailto:[email protected]]
    Sent: Wednesday, September 03, 2003 6:30 PM
    To: [email protected]
    Subject: Re: Registration with Lowell Education Online
    Hello Jeff:
    So far, I have been unable to launch a LOPARC session. I repeatedly
    get the following error message:
    "Exception: java.lang.ClassNotFoundException: LPRemote.class"
    My browser is MS Internet Explorer version 6.0.2800.1106 Initially I was
    using Java Plug-In version 1.4.1 and received the error message. I went
    to the Sun website and downloaded/installed Java Plug-In version 1.4.2
    and still get the message.
    Before I try to launch LOPARC, I can select Tools->Sun Java Console from
    IE's pull down menu to check my Java Plug-In version. When I try to
    launch LOPARC, I get the following message:
    "Applet(s) in this HTML page requires a version of Java different from
    the one the browser is currently using. In order to run the applet(s)
    in this HTML page, a new browser session is required, press 'Yes' to
    start a new browser session." If I select 'No', I get the following
    message: "Java Plug-in detected JRE collission"
    If I select 'Yes', a new browser window opens and then I get the first
    message above.
    Can you help?
    Mike Coucke
    [email protected]
    ----- Original Message -----
    From: <[email protected]>
    To: <[email protected]>
    Sent: Monday, September 01, 2003 5:30 PM
    Subject: Registration with Lowell Education Online
    September 1, 2003
    Dear Michael Coucke:
    Thank you for registering with Lowell Observatory's online education
    site. We hope you enjoy using it and visit regularly as we continue to
    expand its features and capabilities. This is a one-time welcoming
    email.
    For your records, your user ID is xxxxx, and your password is #########.
    You'll need to supply these each time you log in.
    This site gives you access to research-grade equipment including a 16"
    telescope, CCD detector, and image processing software. Our online
    archive of data is now available 24/7. The telescope will be opening to
    our onsite users in May, and on select nights to the Internet at large
    in June.
    We have designed this site so you don't need a huge monitor or a
    supercomputer to use it. All pages are viewable on screens running at
    800x600 resolution or higher. To use LOPARC, you'll need a Java-enabled
    browser with the Java 1.4 plug-in installed. If you don't have the
    plug-in, you'll be prompted to download it the first time you attempt to
    connect. This is an admittedly large (9 MB) but one-time-only download.
    This site works correctly under Internet Explorer version 5 or higher.
    If you use Netscape, you must be running version 6 or higher, and
    display or applet behavior anomalies may occur.
    If at any time you can't connect to our server, simply try again later.
    We do experience several power outages each year, particularly during
    Flagstaff's summer thunderstorm season. Our server is fully protected
    and backed up, and can be quickly brought back on line, but any active
    user sessions will be lost. Thanks for your patience during these
    inevitable downtimes.
    Your questions, comments, suggestions, and bug reports about this site
    are always welcome. On behalf of the LOPARC development team, thanks
    for signing up!
    Jeffrey Hall
    Assistant Research Scientist
    Associate Director, Education and Special Programs
    Lowell Observatory
    Flagstaff, Arizona

    Hi Mike,
    I see this in your logs:
    Java(TM) Plug-in: Version 1.4.2_01
    Using JRE version 1.4.2_01 Java HotSpot(TM) Client VM
    User home directory = C:\WINDOWS
    Proxy Configuration: Manual Configuration
    Proxy: http=proxy,https=proxy,ftp=proxy,gopher=proxy
    Proxy Overrides:
    I just helped my Dad set up his computer with a new
    cable modem, and had the situation where we couldn't
    access any secure Web sites. The cable folks had us
    disable the proxy. It looks like the error message is
    saying it can't find your proxy server, and the logs
    you posted say that you've decided to configure your
    proxy manually, rather than using the settings from
    IE (which is how mine is set up in the plugin
    control panel.)
    Could that be the problem?
    --Steve                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • How to open and store a data to excel file usig java

    you hava a data in database .you can reterive the data and tranformed to excel file.you can save as well as poen it possible or not?

    Here is your basic issue: setting a classpath (and presumably compiling and executing a program) is one of the most basic, fundamental concepts in Java. I would advise you to follow JVerd and Annie's links and get started on a tutorial. Try writing a simple HelloWorld application before delving into POI. When you are more comfortable writing and compiling programs, and post a specific question, it will be much easier to help you.
    - Saish

  • How to get the value retruned by java script function into my jsp page

    Hai all,
    I had a particular java script function which returns a date.
    function getDate() {
         var sDate;
    // This code executes when the user clicks on a day in the calendar.
    if ("TD" == event.srcElement.tagName)
    // Test whether day is valid.
    if ("" != event.srcElement.innerText)
    //alert(event.srcElement.innerText);
    sDate = document.all.year.value + "-" + document.all.month.value + "-" + event.srcElement.innerText;
    document.all.ret.value = sDate;
    var mahi=window.open("configurexml.jsp?xyz=document.all.ret.value")
    return sDate;}
    Now i want to display this particular date in my jsp page. can anyone tell me the correct approach or a sample code to diaplay this date in my jsp page.
    <%@ page language="java"
    import="javax.xml.parsers.*,java.io.*,org.w3c.dom.*"%><%@ page import="java.util.*" %>
    !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html> <head> <title>Configuring Xml File</title>
    <SCRIPT LANGUAGE="JavaScript" SRC="xyz.js"> </SCRIPT>
    body bgcolor="#d0d0d0" onClick= "return getDate()" >
    <form name="f1">
    <b>20 october 2006 </b>
    Here where i am printing the date i had to get the value from the js function. how to do that. plz help me....

    Are you talking about server-side java code (servlets/jsp) or client side (applet)? Given we are in the JSP forum I'll assume we're talking server side.
    If so, you are making a common but fundamental mistake. JavaScript executes on the client, not on the server. If you want client data on the server it has to get there somehow. The simplest way to do this in JSP land is via HTTP. So... have your JavaScript code call a JSP (or servlet) and pass the value you want as a URL parameter. Of course this will also change the browser location, so if you don't want this to happen use a frame or iframe to capture your HTTP request.
    For example:
    Javascript....
    function someFunction() {
    return 1;
    var value = someFunction();
    location.href="somejsp.jsp?value=" + value;

  • NI: Get to grips with Fundamental LV Shortcomings.

    I am not new to software. Having done my fair share of traditional, and, for the last 15 years, OO development I have used quite a few tools and
    programming languages: C, C++, Smalltalk, Java, Eiffel, C# and also written my own programming langauge. The most professional Programming
    Environment I have ever seen is Eclipse (Java Programming Environment) (www.eclipse.org) which again has inherited it's  powerful ideas and tools from
    Smalltalk envrioments.
    I have used LabView for shorter periods in several of its incarnations.  I recently finished a fairly large Realtime Control Project  using version 8.2 and the
    State Diagram Toolkit. (see this thread: http://forums.ni.com/ni/board/message?board.id=170&message.id=234831).
    LabView is a very powerful environment, but like most environments it has its shortcomings. And now we are getting closer to what this thread is all about:
    ** Navigating Source Code ** (Search & Replace  / Find References to objects / Instances)
    Fundamental Search
    The problem is: Many of these issues are ** fundamental ** and easy to fix, but nothing seems to be done about them! I recently upgraded to version 8.5,
    and expected the ** fundamental ** lack of the ability to search for references to my Shared Variables to be fixed. But I was terribly dissapointed, and to be
    honest:
    If a developer cannot Navigate his / hers code, she / he is not in controll of the developed software!
    I have never before seen a programming enviroment that has no feature whatsoever to find References to Variables used in a Program! Unnecssary to say,
    this is an absolutley fundamental tool for any programmer: In text based languages you of course have text bases searches, which are crude, but it does the
    job. In Eclipse you can even search for where variables are Assigned to, or Read from! (The search is actually searching the Parse Tree).
    However, there is not even a Text Based search for Shared Variables in LabView 8.0 to 8.5 and all its intermediate upgrades!
    I have spent countless hours using the extremely crude, cumbersome and time waisting method of deleting the Shared Variable and thereby getting a
    compliler error showing me where the variable is used: Then I have to close my project withouts saving,  reopen the project again and get back to where I
    was working. None of this time can be billed to my clients.
    Yes, I know LabView in the meantime has received a host of powerful features. But this is fundamental feature would take any of NI's highly qualified
    developers a few hours or a day or two to fix.
    So why isn't it implemented? I bet NI's developers miss it as much as the next guy.
    I guess this fundamental feature does not look so good on the Marketing Peoples brochures, so they figure NI's developers should spend their time on new
    features that they can promote and use to get us to upgrade: Guess what: I will wait a very long time until I ugprade again.
    The LabView Search Dialog
    The Search Dialog miss one important feature: The ability to Point at any VI / object in a Block Diagra, to say "this is the type I want to search for".
    Often I cannot find the type I want to search for in the lists the Search Dialog is presenting.
    Other times I simply do not know what the type is, and where to find it, but I am looking at it in an open Block Diagram!
    Enter the StateChart Module
    As I said, we used the StateDiagram Toolkit to develop our Control System: 9 Processes each running their separate State Diagram on a cFP 2120 system.
    The StateDiagram Toolkit is very basic: Not able to resize any state circles or even move more than one at a time: It has been like this for  more than two
    years. However, we are in control of the generated code, and could find references to my VIs in the generated code.
    The StateChart Module is an implementation of the UML StateChart Implementation. Going through the Tutorial I was quite impressed.
    However, yet again the lack of the ability to search for References to important Resources lets the product down:
    a) Not possible to Find references to where in the Diagram any Trigger is used.
    b) Not possible to Search for any used instance / object within a Diagram: Objects / Instances used within the Diagram does not even show up under the
    "VIs by Name list"
    c) Text Searches possible, but matches are found in generated code and ** not ** in the Diagram.
        The generated code has no link whatsoever back to the Diagram.
    I will post another thread with the shortcomings I have found in the StateChart Module and some ways to circumvent these shortcomings.
    Upgrades: What about Tools Developers used in previous versions?
    It is very important for developers to know what happens to the tools they are already using when upgrading to a new version.
    We used the State Diagram Toolkit for thje project we just finished. However, I could not find any words about what happened to this Toolkit in version
    8.5! Developers cannot upgrade without knowing that tools they are using are still working.
    We did not upgrade to version 8.5 during our project, but stayed with version 8.2. And I am glad we did: After the project ended, I moved the source code
    to version 8.5. Everything worked and the cFP 2120 code was also running: However, the performance had deteriorated with > 33%. See this link:
    http://forums.ni.com/ni/board/message?board.id=170&message.id=275320
    Question: What about the Next LabView Release?
    It has taken Natioanl two decades to produce a very capable development system. However, it only takes the introduction of a few more features where the
    Programmers do not have Navigation Control (ability to search & find / replace) to bring the productivity of this product down to its knees.
    I certainly hope that NI in the next LabView Release concentrates on fixing these and other Naviagion shortcomings (rather than introducing features) to bring
    LabView up to the Speed an Productivity that it is capable of: NI got the engineers to do it: Give just give them the time to fix the problems!
    Can we please have NI's dedication to fix these easy to fix issues and thereby give back Navigational Control to us, the Developers ?
    Please, I do want to continue to impress my clients with what LabView can do, in a short amount of time !
    Geir Ove

    Most of the "shortcomings" that LV exhibits arise from NI trying to placate people such as yourself who have no idea about how to go about creating a good LV-based application. In terms of specific responses I truly don't know where to begin with your points. To begin with, its clear that despite your years of experience working in other languages you don't know squat about developing in LV. For example, you start with the assumption that using dozens of named variables is a good thing! Did it ever occur to you that if you are having this hard a time with maintaining an application that there might be something fundamentally flawed in your design - no of course not - it's easier to blame the tool.
    LV is an ideal environment to develop very large applications - as has been shown time and again. However, you must keep it straight that there is no correlation between complex code and complex functionality. Unfortunately, most people thing there is. They believe that to have complex functionality they need really complex code. As a result they write an incredibly bad implementation of something that is essentially a simple process. Starting from this faulty example they then try to extrapolate what it would take to create a large application and immediately assume that LV is only for "small" projects.
    Mike...
    Certified Professional Instructor
    Certified LabVIEW Architect
    LabVIEW Champion
    "... after all, He's not a tame lion..."
    Be thinking ahead and mark your dance card for NI Week 2015 now: TS 6139 - Object Oriented First Steps

  • Java.lang.UnsatisfiedLinkError: ocijdbc9.dll: Can't find dependent librarie

    Hi all,
    I have written a simple code to connect to Oracle9i in WindowsXP.
    Oracle is installed and running on Linux machne on the Intranet.
    I have set 'classes12.jar' in classpath and placed following dlls in "C:\WINDOWS\system32" path
    ocijdbc9.dll
    ocijdbc9_g.dll
    heteroxa9.dll
    heteroxa9_g.dll
    Following is the part of code:
    public String dbName = new String("jdbc:oracle:oci8:username/password@sid_192.168.0.128");
    public String dbClassName = new String("oracle.jdbc.driver.OracleDriver");
    Class.forName(dbClassName);
    conection = DriverManager.getConnection(dbName);
    statement = conection.createStatement();
    When I run this code got following errors:
    java.lang.UnsatisfiedLinkError: C:\WINDOWS\system32\ocijdbc9.dll: Can't find dependent libraries
         at java.lang.ClassLoader$NativeLibrary.load(Native Method)
         at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1560)
         at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1485)
         at java.lang.Runtime.loadLibrary0(Runtime.java:788)
         at java.lang.System.loadLibrary(System.java:834)
         at oracle.jdbc.oci8.OCIDBAccess.logon(OCIDBAccess.java:262)
         at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:346)
         at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468)
         at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
         at java.sql.DriverManager.getConnection(DriverManager.java:512)
         at java.sql.DriverManager.getConnection(DriverManager.java:193)
         at menus.SQLShelfManager.openDBconnecton(SQLShelfManager.java:46)
         at menus.SQLShelfManager.main(SQLShelfManager.java:129)
    Exception in thread "main"
    Please guide me, what I am missing? Thanks in advance...

    There are only a very very few and rare good reasons to use the oci8 driver with Java (and I can't remember any of them at the moment). Performance is not one of them. If at all possible, you should use the Type IV (thin) driver instead.
    The classes12.jar (or zip) is for use with Java 1.2 and 1.3. There are different versions of this jar for each version of the database, but they're fundamentally cross-compatible; all the post-8i drivers are supposed to work with all the post-8i databases (and the 8i stuff also mostly works too). There's been a succession of bug fixes and minor functional changes, as well as some very substantial perfromance improvements. If you are developing brand-new code, I very stongly encourage you to use the very latest driver (currently 10.2.0.1, I think). If you are using a Java version greater than 1.3, then you should use the ojdbc14.jar instead (and don't try to use both classes12.jar and ojdbc14.jar, they have the sameclasses in them). I think the 10.2.0.1 ojdb14.jar was the first one certified for Java 1.5, and it's significantly faster than the 9i drivers. Anyone considering an upgrade of drivers should plan to do a good regression test; as mentioned before, there are some very small functional differences. You can download the latest drivers here:
    http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
    If you insist on using oci, then you probably need to do an Oracle client installation on your Windows box. If you stay with the 9i driver, the full client install is huge; however, you can almost certainly use the 10g "Instant Client", which is a pared-down version, with just the minimal stuff to support an application. That's available here:
    http://www.oracle.com/technology/tech/oci/instantclient/instantclient.html

  • What do people think about the different Generic Java approaches?

    I have seen a lot of different approaches for Generic Java, and when people find problems with each approach the normal response has been: the other approach is worse with such and such a problem, do you have a better way?
    The different approaches I have seen are: (in no particular order)
    Please correct me if I am wrong and add other approaches if they are worthy of mention.
    1) PolyJ - by MIT
    This is a completely different approach than the others, that introduces a new where clause for bounding the types, and involves changing java byte codes in order to meet it's goals.
    Main comments were not a java way of doing things and far too greater risk making such big changes.
    2) Pizza - by Odersky & Wadler
    This aims at extending java in more ways than just adding Generics. The generic part of this was replaced by GJ, but with Pizza's ability to use primitives as generic types removed, and much bigger changes allowing GJ to interface with java.
    Main comments were that Pizza doesn't work well with java, and many things in Pizza were done in parallel with java, hence were no longer applicable.
    3) GJ - by Bracha, Odersky, Stoutamire & Wadler
    This creates classes with erased types and bridging methods, and inserts casts when required when going back to normal java code.
    Main comments are that type dependent operations such as new, instanceof, casting etc can't be done with parametric types, also it is not a very intuitive approach and it is difficult to work out what code should do.
    4) Runtime Generic Information - by Natali & Viroli
    Each instance holds information about its Runtime Type.
    Main comments from people were that this consumes way too much memory as each instance holds extra information about its type, and the performance would be bad due to checking Type information at runtime that would have been known at compile.
    5) NextGen - by Cartwright & Steele
    For each parameterized class an abstract base class with types erased is made and then for each new type a lightweight wrapper class and interface are created re-using code from the base class to keep the code small.
    Main comments from people were that this approach isn't as backwards compatible as GJ due to replacing the legacy classes with abstract base classes which can't be instantiated.
    6) .NET common runtime - by Kennedy & Syme
    This was written for adding Generics to C#, however the spec is also targeted at other languages such as VB.
    Main comments from people were that this approach isn't java, hence it is not subject to the restrictions of changing the JVM like java is.
    7) Fully Generated Generic Classes - by Agesen, Freund & Mitchell
    For each new type a new class is generated by a custom class loader, with all the code duplicated for each different type.
    Main comments from people were that the generated code size gets too big, and that it is lacking a base class for integration with legacy code.
    8) JSR-14 - by Sun
    This is meant to come up with a solution Generic Solution to be used in java. Currently it is heavily based on GJ and suffering from all the same problems as GJ, along with the fact that it is constantly undergoing change and so no one knows what to expect.
    See this forum for comments about it.
    As if we didn't have enough approaches already, here is yet another one that hopefully has all of the benefits, and none of the problems of the other approaches. It uses information learnt while experimenting with the other approaches. Now when people ask me if I think I have a better approach, I will have somewhere to point them to.
    (I will be happy to answer questions concerning this approach).
    9) Approach #x - by Phillips
    At compile time 1 type is made per generic type with the same name.
    e.g.class HashSet<TypeA> extends AbstractSet<TypeA> implements Cloneable, Serializable will be translated to a type: class HashSet extends AbstractSet implements Cloneable, SerializableAn instance of the class using Object as TypeA can now be created in 2 different ways.
    e.g.Set a = new HashSet();
    Set<Object> b = new HashSet<Object>();
    //a.getClass().equals(b.getClass()) is trueThis means that legacy class files don't even need to be re-compiled in order to work with the new classes. This approach is completely backwards compatible.
    Inside each type that was created from a generic type there is also some synthetic information.
    Information about each of the bounding types is stored in a synthetic field.
    Note that each bounding type may be bounded by a class and any number of interfaces, hence a ';' is used to separate bounding types. If there is no class Object is implied.
    e.g.class MyClass<TypeA extends Button implements Comparable, Runnable; TypeB> will be translated to a type: class MyClass {
      public static final Class[][] $GENERIC_DESCRIPTOR = {{Button.class, Comparable.class, Runnable.class}, {Object.class}};This information is used by a Custom Class Loader before generating a new class in order to ensure that the generic types are bounded correctly. It also gets used to establish if this class can be returned instead of a generated class (occurs when the generic types are the same as the bounding types, like for new HashSet<Object> above).
    There is another synthetic field of type byte[] that stores bytes in order for the Custom Class Loader to generate the new Type.
    There are also static methods corresponding to each method that contain the implementation for each method. These methods take parameters as required to gain access to fields, contructors, other methods, the calling object, the calling object class etc. Fields are passed to get and set values in the calling object. Constructors are passed to create new instances of the calling object. Other methods are passed when super methods are called from within the class. The calling object is almost always passed for non static methods, in order to do things with it. The class is passed when things like instanceof the generated type need to be done.
    Also in this class are any non private methods that were there before, using the Base Bounded Types, in order that the class can be used exactly as it was before Generics.
    Notes: the time consuming reflection stuff is only done once per class (not per instance) and stored in static fields. The other reflection stuff getting done is very quick in JDK1.4.1 (some earlier JDKs the same can not be said).
    Also these static methods can call each other in many circumstances (for example when the method getting called is private, final or static).
    As well as the ClassLoader and other classes required by it there is a Reflection class. This class is used to do things that are known to be safe (assuming the compiler generated the classes correctly) without throwing any exceptions.
    Here is a cut down version of the Reflection class: public final class Reflection {
      public static final Field getDeclaredField(Class aClass, String aName) {
        try {
          Field field = aClass.getDeclaredField(aName);
          field.setAccessible(true);
          return field;
        catch (Exception ex) {
          throw new Error(ex);
      public static final Object get(Field aField, Object anObject) {
        try {
          return aField.get(anObject);
        catch (Exception ex) {
          throw new Error(ex);
      public static final void set(Field aField, Object anObject, Object aValue) {
        try {
          aField.set(anObject, aValue);
        catch (Exception ex) {
          throw new Error(ex);
      public static final int getInt(Field aField, Object anObject) {
        try {
          return aField.getInt(anObject);
        catch (Exception ex) {
          throw new Error(ex);
      public static final void setInt(Field aField, Object anObject, int aValue) {
        try {
          aField.setInt(anObject, aValue);
        catch (Exception ex) {
          throw new Error(ex);
    }Last but not least, at Runtime one very lightweight wrapper class per type is created as required by the custom class loader. Basically the class loader uses the Generic Bytes as the template replacing the erased types with the new types. This can be even faster than loading a normal class file from disk, and creating it.
    Each of these classes has any non private methods that were there before, making calls to the generating class to perform their work. The reason they don't have any real code themselves is because that would lead to code bloat, however for very small methods they can keep their code inside their wrapper without effecting functionality.
    My final example assumes the following class name mangling convention:
    * A<component type> - Array
    * b - byte
    * c - char
    * C<class name length><class name> - Class
    * d - double
    * f - float
    * i - int
    * l - long
    * z - boolean
    Final Example: (very cut down version of Vector)public class Vector<TypeA> extends AbstractList<TypeA> implements RandomAccess, Cloneable, Serializable {
      protected Object[] elementData;
      protected int elementCount;
      protected int capacityIncrement;
      public Vector<TypeA>(int anInitialCapacity, int aCapacityIncrement) {
        if (anInitialCapacity < 0) {
          throw new IllegalArgumentException("Illegal Capacity: " + anInitialCapacity);
        elementData = new Object[initialCapacity];
        capacityIncrement = capacityIncrement;
      public synchronized void setElementAt(TypeA anObject, int anIndex) {
        if (anIndex >= elementCount) {
          throw new ArrayIndexOutOfBoundsException(anIndex + " >= " + elementCount);
        elementData[anIndex] = anObject;
    }would get translated as:public class Vector extends AbstractList implements RandomAccess, Cloneable, Serializable {
      public static final Class[][] $GENERIC_DESCRIPTOR = {{Object.class}};
      public static final byte[] $GENERIC_BYTES = {/*Generic Bytes Go Here*/};
      protected Object[] elementData;
      protected int elementCount;
      protected int capacityIncrement;
      private static final Field $0 = Reflection.getDeclaredField(Vector.class, "elementData"),
                                 $1 = Reflection.getDeclaredField(Vector.class, "elementCount"),
                                 $2 = Reflection.getDeclaredField(Vector.class, "capacityIncrement");
      static void $3(int _0, Field _1, Object _2, Field _3, int _4) {
        if (_0 < 0) {
          throw new IllegalArgumentException("Illegal Capacity: " + _0);
        Reflection.set(_1, _2, new Object[_0]);
        Reflection.setInt(_3, _2, _4);
      static void $4(int _0, Field _1, Object _2, Field _3, Object _4) {
        if (_0 >= Reflection.getInt(_1, _2)) {
          throw new ArrayIndexOutOfBoundsException(_0 + " >= " + Reflection.getInt(_1, _2));
        ((Object[])Reflection.get(_3, _2))[_0] = _4;
      public Vector(int anInitialCapacity, int aCapacityIncrement) {
        $3(anInitialCapacity, $0, this, $2, aCapacityIncrement);
      public synchronized void setElementAt(Object anObject, int anIndex) {
        $4(anIndex, $1, this, $0, anObject);
    } and new Vector<String> would get generated as:public class Vector$$C16java_lang_String extends AbstractList$$C16java_lang_String implements RandomAccess, Cloneable, Serializable {
      protected Object[] elementData;
      protected int elementCount;
      protected int capacityIncrement;
      private static final Field $0 = Reflection.getDeclaredField(Vector$$C16java_lang_String.class, "elementData"),
                                 $1 = Reflection.getDeclaredField(Vector$$C16java_lang_String.class, "elementCount"),
                                 $2 = Reflection.getDeclaredField(Vector$$C16java_lang_String.class, "capacityIncrement");
      public Vector$$C16java_lang_String(int anInitialCapacity, int aCapacityIncrement) {
        Vector.$3(anInitialCapacity, $0, this, $2, aCapacityIncrement);
      public synchronized void setElementAt(String anObject, int anIndex) {
        Vector.$4(anIndex, $1, this, $0, anObject);
    }Comparisons with other approaches:
    Compared with PolyJ this is a very java way of doing things, and further more it requires no changes to the JVM or the byte codes.
    Compared with Pizza this works very well with java and has been designed using the latest java technologies.
    Compared with GJ all type dependent operations can be done, and it is very intuitive, code does exactly the same thing it would have done if it was written by hand.
    Compared with Runtime Generic Information no extra information is stored in each instance and hence no extra runtime checks need to get done.
    Compared with NextGen this approach is completely backwards compatible. NextGen looks like it was trying to achieve the same goals, but aside from non backwards compatibility also suffered from the fact that Vector<String> didn't extend AbstractList<String> causing other minor problems. Also this approach doesn't create 2 types per new types like NextGen does (although this wasn't a big deal anyway). All that said NextGen was in my opinion a much better approach than GJ and most of the others.
    Compared to .NET common runtime this is java and doesn't require changes to the JVM.
    Compared to Fully Generated Generic Classes the classes generated by this approach are very lightweight wrappers, not full blown classes and also it does have a base class making integration with legacy code simple. It should be noted that the functionality of the Fully Generated Generic Classes is the same as this approach, that can't be said for the other approaches.
    Compared with JSR-14, this approach doesn't suffer from GJ's problems, also it should be clear what to expect from this approach. Hopefully JSR-14 can be changed before it is too late.

    (a) How you intend generic methods to be translated.
    Given that Vector and Vector<Object> are unrelated types,
    what would that type be represented as in the byte code of
    the method? In my approach Vector and Vector<Object> are related types. In fact the byte code signature of the existing method is exactly the same as it was in the legacy code using Vector.
    To re-emphasize what I had said when explaining my approach:
    System.out.println(Vector.class == Vector<Object>.class);  // displays true
    System.out.println(Vector.class == Vector<String>.class);  // displays false
    Vector vector1 = new Vector<Object>(); // legal
    Vector<Object> vector2 = new Vector();  // legal
    // Vector vector3 = new Vector<String>(); // illegal
    // Vector<String> vector4 = new Vector();  // illegal
    Vector<String> vector5 = new Vector<String>();  // legal
    You must also handle the case where the type
    parameter is itself a parameterized type in which the type
    parameter is not statically bound to a ground instantiation.This is also very straightforward: (let me know if I have misunderstood you)
    (translation of Vector given in my initial description)
    public class SampleClass<TypeA> {
      public static void main(String[] args) {
        System.out.println(new Vector<Vector<TypeA>>(10, 10));
    }would get translated as:public class SampleClass {
      public static final Class[][] $GENERIC_DESCRIPTOR = {{Object.class}};
      public static final byte[] $GENERIC_BYTES = {/*Generic Bytes Go Here*/};
      private static final Constructor $0 = Reflection.getDeclaredConstructor(Vector$$C16java_util_Vector.class, new Class[] {int.class, int.class});
      static void $1(Constructor _0, int _1, int _2) {
        try {
          System.out.println(Reflection.newInstance(_0, new Object[] {new Integer(_1), new Integer(_2)}));
        catch (Exception ex) {
          throw (RuntimeException)ex;
      public static void main(String[] args) {
        $1($0, 10, 10);
    }and SampleClass<String> would get generated as:public class SampleClass$$C16java_lang_String {
      private static final Constructor $0 = Reflection.getConstructor(Vector$$C37java_util_Vector$$C16java_lang_String.class, new Class[] {int.class, int.class});
      public static void main(String[] args) {
        SampleClass.$1($0, 10, 10);
    Also describe the implementation strategy for when these
    methods are public or protected (i.e. virtual).As I said in my initial description that for non final, non static, non private method invocations a Method may be passed into the implementing synthetic method as a parameter.
    Note: the following main method will display 'in B'.
    class A {
      public void foo() {
        System.out.println("in A");
    class B extends A {
      public void foo() {
        System.out.println("in B");
    public class QuickTest {
      public static void main(String[] args) {
        try {
          A.class.getMethod("foo", null).invoke(new B(), null);
        catch (Exception ex) {}
    }This is very important as foo() may be overwritten by a subclass as it is here. By passing a Method to the synthetic implementation this guarantees that covariance, invariance and contra variance all work exactly the same way as in java. This is a fundamental problem with many other approaches.
    (b) The runtime overhead associated with your translationAs we don't have a working solution to compare this to, performance comments are hard to state, but I hope this helps anyway.
    The Class Load time is affected in 4 ways. i) All the Generic Bytes exist in the Base Class, hence they don't need to be read from storage. ii) The custom class loader, time to parse the name and failed finds before it finally gets to define the class. iii) The generation of the generic bytes to parametric bytes (basically involves changing bytes from the Constant Pool worked out from a new Parametric type, Utf8, Class and the new Parametric Constant types may all be effected) iv) time to do the static Reflection stuff (this is the main source of the overhead). Basically this 1 time per class overhead is nothing to be concerned with, and Sun could always optimize this part further.
    The normal Runtime overhead (once Classes have been loaded) is affected mainly by reflection: On older JDKs the reflection was a lot slower, and so might have made a noticeable impact. On newer JDKs (since 1.4 I think), the reflection performance has been significantly improved. All the time consuming reflection is done once per class (stored in static fields). The normal reflection is very quick (almost identical to what is getting done without reflection). As the wrappers simply include a single method call to another method, these can be in-lined and hence made irrelevant. Furthermore it is not too difficult to make a parameter that would include small methods in the wrapper classes, as this does not affect functionality in the slightest, however in my testing I have found this to be unnecessary.
    (c) The space overhead (per instantiation)There are very small wrapper classes (one per new Type) that simply contain all non private methods, with single method calls to the implementing synthetic method. They also include any fields that were in the original class along with other synthetic fields used to store reflected information, so that the slow reflection only gets done once per new Type.
    (d) The per-instance space overheadNone.
    (e) Evidence that the proposed translation is sound and well-defined for all relevant cases (see below)Hope this is enough, if not let me know what extra proof you need.
    (f) Evidence for backward compatibility
    (For example, how does an old class file that passes a Vector
    to some method handle the case when the method receives a Vector<T>
    where T is a type parameter? In your translation these types are unrelated.)As explained above, in my approach these are only unrelated for T != Object, in the legacy case T == Object, hence legacy code passing in Vector is exactly the same as passing in Vector<Object>.
    (g) Evidence for forward compatibility
    (How, exactly, do class files that are compiled with a generics compiler run on an old VM)They run exactly the same way, the byte codes from this approach are all legal java, and all legal java is also legal in this approach. In order to take advantage of the Generics the Custom Class Loader would need to be used or else one would get ClassNotFoundExceptons, the same way they would if they tried using Collections on an old VM without the Collections there. The Custom Class Loader even works on older VMs (note it may run somewhat slower on older VMs).
    (h) A viable implementation strategyType specific instantiations are at Class Load time, when the Custom Class Loader gets asked for a new Class, it then generates it.
    The type specific instantiations are never shipped as they never get persisted. If you really wanted to save them all you need to do is save them with the same name (with the $$ and _'s etc), then the class loader would find them instead of generating them. There is little to be gained by doing this and the only reason I can think of for doing such a thing would be if there was some reason why the target VM couldn't use the Custom Class Loader (the Reflection class would still need to be sent as well, but that is nothing special). Basically they are always generated at Runtime unless a Class with the same name already exists in which case it would be used.
    The $GENERIC_DESCRIPTOR and $GENERIC_BYTES from the base class along with the new Type name are all that is required to generate the classes at runtime. However many other approaches can achieve the same thing for the generation, and approaches such as NextGen's template approach may be better. As this generation is only done once per class I didn't put much research into this area. The way it currently works is that the $GENERIC_DESCRIPTOR are basically used to verify that a malicious class files is not trying to create a non Type Safe Type, ie new Sample<Object>() when the class definition said class Sample<TypeA extends Button>. The $GENERIC_BYTES basically correspond to the normal bytes of a wrapper class file, except that in the constant pool it has some constants of a new Parametric Constant type that get replaced at class load time. These parametric constants (along with possibly Utf8 and Class constants) are replaced by the Classes at the end of the new type name, a little more complex than that but you probably get the general idea.
    These fine implementation details don't affect the approach so much anyway, as they basically come down to class load time performance. Much of the information in the $GENERIC_BYTES could have been worked out by reflection on the base type, however at least for now simply storing the bytes is a lot easier.
    Note: I have made a small syntax change to the requested class:
    public T(X datum) --> public T<X>(X datum)
    class T<X> {
      private X datum;
      public T<X>(X datum) {
        this.datum = datum;
      public T<T<X>> box() {
        return new T<T<X>>(this);
      public String toString() {
        return datum.toString();
      public static void main(String[] args) {
        T<String> t = new T<String>("boo!");
        System.out.println(t.box().box());
    }would get translated as:
    class T {
      public static final Class[][] $GENERIC_DESCRIPTOR = {{Object.class}};
      public static final byte[] $GENERIC_BYTES = {/*Generic Bytes Go Here*/};
      private Object datum;
      private static final Field $0 = Reflection.getDeclaredField(T.class, "datum");
      private static final Constructor $1 = Reflection.getDeclaredConstructor(T$$C1T.class, new Class[] {T.class});
      static void $2(Field _0, Object _1, Object _2) {
        Reflection.set(_0, _1, _2);
      static Object $3(Constructor _0, Object _1) {
        try {
          return Reflection.newInstance(_0, new Object[] {_1});
        catch (Exception ex) {
          throw (RuntimeException)ex;
      static String $4(Field _0, Object _1) {
        return Reflection.get(_0, _1).toString();
      static void $5() {
        T$$C16java_lang_String t = new T$$C16java_lang_String("boo!");
        System.out.println(t.box().box());
      public T(Object datum) {
        $2($0, this, datum);
      public T$$C1T box() {
        return (T$$C1T)$3($1, this);
      public String toString() {
        return $4($0, this);
      public static void main(String[] args) {
        $5();
    }as the generic bytes aren't very meaningful and by no means a requirement to this approach (NextGen's template method for generation may work just as well), here are the generated classes with some unused code commented out instead:
    class T$$C28T$$C22T$$C16java_lang_String {
      private T$$C22T$$C16java_lang_String datum;
      private static final Field $0 = Reflection.getDeclaredField(T$$C28T$$C22T$$C16java_lang_String.class, "datum");
    //  private static final Constructor $1 = Reflection.getDeclaredConstructor(T$$C34T$$C28T$$C22T$$C16java_lang_String.class, new Class[] {T$$C28T$$C22T$$C16java_lang_String.class});
      public T$$C28T$$C22T$$C16java_lang_String(T$$C22T$$C16java_lang_String datum) {
        T.$2($0, this, datum);
    //  public T$$C34T$$C28T$$C22T$$C16java_lang_String box() {
    //    return (T$$C34T$$C28T$$C22T$$C16java_lang_String)T.$3($1, this);
      public String toString() {
        return T.$4($0, this);
      public static void main(String[] args) {
        T.$5();
    class T$$C22T$$C16java_lang_String {
      private T$$C16java_lang_String datum;
      private static final Field $0 = Reflection.getDeclaredField(T$$C22T$$C16java_lang_String.class, "datum");
      private static final Constructor $1 = Reflection.getDeclaredConstructor(T$$C28T$$C22T$$C16java_lang_String.class, new Class[] {T$$C22T$$C16java_lang_String.class});
      public T$$C22T$$C16java_lang_String(T$$C16java_lang_String datum) {
        T.$2($0, this, datum);
      public T$$C28T$$C22T$$C16java_lang_String box() {
        return (T$$C28T$$C22T$$C16java_lang_String)T.$3($1, this);
      public String toString() {
        return T.$4($0, this);
      public static void main(String[] args) {
        T.$5();
    class T$$C1T {
      private T datum;
      private static final Field $0 = Reflection.getDeclaredField(T$$C1T.class, "datum");
    //  private static final Constructor $1 = Reflection.getDeclaredConstructor(T$$C6T$$C1T.class, new Class[] {T$$C1T.class});
      public T$$C1T(T datum) {
        T.$2($0, this, datum);
    //  public T$$C6T$$C1T box() {
    //    return (T$$C6T$$C1T)T.$3($1, this);
      public String toString() {
        return T.$4($0, this);
      public static void main(String[] args) {
        T.$5();
    class T$$C16java_lang_String {
      private String datum;
      private static final Field $0 = Reflection.getDeclaredField(T$$C16java_lang_String.class, "datum");
      private static final Constructor $1 = Reflection.getDeclaredConstructor(T$$C22T$$C16java_lang_String.class, new Class[] {T$$C16java_lang_String.class});
      public T$$C16java_lang_String(String datum) {
        T.$2($0, this, datum);
      public T$$C22T$$C16java_lang_String box() {
        return (T$$C22T$$C16java_lang_String)T.$3($1, this);
      public String toString() {
        return T.$4($0, this);
      public static void main(String[] args) {
        T.$5();
    }the methods from the Reflection class used in these answers not given in my initial description are:
      public static final Object newInstance(Constructor aConstructor, Object[] anArgsArray) throws Exception {
        try {
          return aConstructor.newInstance(anArgsArray);
        catch (InvocationTargetException ex) {
          Throwable cause = ex.getCause();
          if (ex instanceof Exception) {
            throw (Exception)ex;
          throw new Error(ex.getCause());
        catch (Exception ex) {
          throw new Error(ex);
      public static final Constructor getDeclaredConstructor(Class aClass, Class[] aParameterTypesArray) {
        try {
          Constructor constructor = aClass.getDeclaredConstructor(aParameterTypesArray);
          constructor.setAccessible(true);
          return constructor;
        catch (Exception ex) {
          throw new Error(ex);
      }

  • Which Java packages can be used in Script processors and where/how to customise EDQ

    The online help for the Script processor shows an example using java.util:
    output1 = java.util.UUID.randomUUID().toString()
    but are there any other packages that can be used?
    The background to this question is that we'd like to know whether it might be possible to call a web service from an EDQ process - would this possible through scripting, by creating a new processor or through some other customisation.
    More fundamentally is there anything explaining where and how 'native' EDQ (i.e. not additional packs like the Customer Data Services Pack) can be customised and for what typical purposes.
    Thanks, Nik

    Hi,
    Yes it is possible to call web services from script. Others will likely help with examples of how to do this.
    For more information about extending EDQ, see the topic 'Extending EDQ' in the online help.
    There is also a full guide to the processor library in the online help.
    Regards,
    Mike

  • Should we avoid Graphical mapping and stick with Java mapping?

    After developing mappings in XI for a month, I just don't see any good reasons to use Graphical mappings over Java mappings. Maybe some experienced users here can give me some valid reasons why we should choose Graphical mappings. Here is what I think:
    Disadvantages of Graphical mappings:
    1. No way to perform automated unit testings. This is probably the biggest reason I hate it. You can do some tests manually when you work in Integration Builder. But there is no way you can write some unit testing utilities to automate the task.
    2. Complexity. Even for some simple requirements, your Graphical mappings can become complicated and hard to understand. A lot of times, I find myself staring at several dozens of graphical nodes and try to understand what it does.
    3. Impossible to reuse. This is totally against the DRY (Don't repeat yourself) principle. For example, to generate messages for JDBC adapter, it is common to have two identical fields for primary keys: one in the access node and another in the key node. If you change the mapping logic in one, you have to remember to change the other.
    Advantage with Java mappings:
    1. Fully automated unit testing. You can create JUnit tests along with your Java mapping classes and use Maven or other build tools to perform automated unit testing.
    2. Your choice of XML parsing and binding. With Java mapping, you can choose any open source framework for XML parsing and binding. For example, with XMLBeans, I can convert XML input message to a Java object, transform to another Java object and write to output message. And each Java object is generated from its corresponding XML schema.
    3. Highly reusable. We can use fundamental object-oriented designs to create highly reusable mapping components.
    4. Better version control. Since the mappings are just Java classes, we can use CVS or SVN to track code changes.
    5. Better build tools. We can fully utilize build tools like Ant and Maven to automate the build, unit tests, or even generate documents and mapping web sites.
    So do you guys agree? Maybe I am still new to XI or I am missing some important things. But at this point, I just don't see why I should use Graphical mappings. Is there anyone developing XI interfaces completely with Java mappings?
    Thanks in advance for any comments!
    Kenny Cheang

    Hi Suraj,
    > Since its graphical the blocks will take space, but
    > there is always an adavntage of processing time.
    > Ebven though it may appear bigger, it will take less
    > time as compared with Java code (for the same
    > mapping).
    Could you explain more why the graphical mapping has better performance? I thought the graphical mapping is compiled into a Java class in the runtime anyway.
    > Yes thats there, but same goes with Java mapping too
    > right (if you haven't mentioned it as constants)
    I mainly think about inheritance. If I have to build 10 interfaces and they all have some common behavior, I can create a base interface class to encapsulate the common logic. But with graphical mapping, you have to duplicate them in each interface.
    > Disadvantages of Java mapping:
    > 1. Performance
    Same as above. I just don't see why Java has worse performance. I actually think Java should have better performance. You can optimize the code anyway you want. In some cases, you have to use queue functions in graphical mapping but it's not necessary in Java.
    > 2. All might not be well versed with Java Code(though
    > everyone may know basic java) .
    I am not asking everyone to abandon graphical mapping. I am just wondering which one is better when you have skills for both.
    > 3. Lot of standard functions are available in GM
    > which you can choose, but you have to remember the
    > exact code for those in Java mapping.
    You can create functions in Java too. All you have to do is to remember the function name.
    Kenny

Maybe you are looking for

  • While doinh Miro Cenvat clearing excise not flowing.

    Dear all ,, we have one po in that we maintained same material with qty 10.we maintained J1ID for that material. we have received migo two times first time 5 qty and second time 5 qty we have updated part1 and part2 also posted, we received two excis

  • Mail Forwarding

    Greetings, I have recently configured a Leopard 10.5.1 Mail Server, which is a new platform for me. I have finally gotten all mail services to work and am finishing up the installation. I have a client that uses a crackberry who wants his email both

  • Looking for answer keys for "Object First with Java"

    Where can I find a book with anwser keys for the book " Object First with Java" Third Edition?

  • Windows Flash CS3/CS4 Installing Fonts

    Hi, Can someone tell me where Flash gets its fonts from. Does it use just the system fonts or can it see the C:\Program Files\Common Files\Adobe\Fonts folder? Thanks Simon Kemp.

  • ALL CS6 Apps Freeze When SAVING file to External HD

    Ok Adobe, help me out here before I reconsider my longstanding glee with Master Suite CS4. I recently subscribed to the Creative Cloud, downloaded, installed and activated ALL applications. All applications have since been updated via the Adobe updat