Jump to content
Excelsior Forums


Excelsior Staff
  • Content count

  • Joined

  • Last visited

Everything posted by kit

  1. By design of our JIT, it has explicit heap limit and may use swap but can not be adaptive as heap limit of a whole application. JITing fails if explicit heaplimit is exceeded. On the other hand, increasing the heap for JIT causes for the main application to be able allocate less memory. So there is a trade-off between how much memory could be allocated by JIT and the application. "JIT ERROR: (RT) not enough memory for JIT compiler" is another error in compare with "JIT ERROR: (JIT) Internal crash while bytecode compiling: out of heap space". The first means that there is no physical memory to load JIT, while the second means that there is no memory to compile classes at run-time by loaded JIT. So increasing the heap for JIT to solve the second problem may cause in turn the first problem. In your situation, I would suggest you to enable the following runtime property: -Djet.jit.disable.resolution In this case, JIT will compile much less classes at single JIT session, so the default JIT heaplimit setting should fit for the most cases.
  2. kit

    Using the SmartCard IO API

    Thank you very much for the link. I have examined the issue and found that there is a problem with it in JET 6.0. It is astonishing for me that this concrete API is not necessary to be supported in order to be Java SE 6 compatible, so JCK 6 does not cover it. However we may support it and are working on it now. Can you send us a sample on its usage that we can easily test during this job?
  3. kit

    Using the SmartCard IO API

    So what do you use now: OCF or Java 6 smartcard API? BTW, I do not see the later in public APIs doc at http://java.sun.com/javase/6/docs/api/, so can you point me what exactly you mean by this? Indeed, Excelsior JET 6.0 supports all public features of Java SE 6 that covered by JCK. Can you confirm, that your program works ok when it runs on a fresh (not modified) installation of Sun JRE 1.6, assuming that you specify the same classpath, Java system properties and working directory that you specify for JET 6.0?
  4. This topic has been moved to How Do I?. [iurl]http://www.excelsior-usa.com/forum/index.php?topic=1530.0[/iurl]
  5. If you opt for Excelsior Installer as a backend of your installer, you need to write an install customization DLL for your challenge. Refer to this sample <JETInstallDir>/samples/InstallCustomization and read the JET User's Guide, Chapter "Deployment automation", Section "Step 7: Specifying Installation Settings / Extra facilities", and Section "Excelsior Installer / Callback DLLs".
  6. Do you mean jar files by "external libraries"? If yes, by default the JET compiler automatically packs into the executable the application's jar files listed in classpth. jet-compiled executables consists of original reflection information, so the names of your classes and methods can be easily retrieved from the executable. So class/members name obfuscation would help for this subject. For more details, read this Knowledge Base article: "HOWTO: Maximize protection of your application against reverse engineering" http://www.excelsior-usa.com/kb/000023.html No, it does not affect performance.
  7. You may easily integrate the build and pack processes of jet-compiled executables into your existing ant scripts: 1. For build, use build script that is automatically created by JET Control Panel such as build_YourApp.bat 2. For pack, use xpack command line utility. For more details on the subject, read JET User's Guide, Chapter "Deployment automation", Section "Deployment utilities", Subsection "xpack"
  8. kit

    hide console window

    I would also suggest you to emulate console window in pure Java writing it in Swing (SWT) and resetting System.out, System.err for it.
  9. kit

    UAC Support for Vista

    Of course, when we was adding support for Vista in JET 5.0, UAC was the number one, with what we was fighting. So since JET 5.0, every jet-compiled executable has a UAC manifest resource. The execution level in it is "asInvoker". So it should meet your requirement as I see. If you would like to change default UAC manifest resource, you may replace the resource that can be found here: <JETInstallDir>\lib\x86\app.res I may agree that we may add more explicit way to customize the resource, however our JET 5.0 support shows that the default resource is enough for the most users.
  10. To increase the heap for JIT compiler, use the following runtime property: -Djet.jit.heap.size=256m
  11. kit

    Customised Installation Messages

    Excelsior Installer detects that the software is already installed and issues a message about it. However it does not detect that previous version of the software is installed. You may implement this functionality by yourself and customize the installer. To learn how to customize Excelsior Installer, please read JET User's Guide, Chapter " Deployment automation", Section "Step 7: Specifying installation settings", Subsection "Extra facilities", paragraph "Callback DLLs" .
  12. kit

    Customised Installation Messages

    The most probabaly the answer is no, but I cannot find any message that looks like you wrote. When do you see it?
  13. This error means that there is a bug in their software. They may contact us for consultation, but the users of their software should not contact us directly. As to email you have seen, our apologies for it. In fact, it means unexpected crash of a software (that uses some old version of Excelsior JET).
  14. Why do not you write to support of CollabCad with the link you have provided?
  15. The reason of misbehavior is obviously here. You need to investigate when it is corrupted and what corrupts it. I could suggest you the following experiments: 1. First, check if it is ok, just after installing (compare it with the good one from already installed application on a good system). 2. Try to set read-only attribute to the DLL, repackage the application and perform experiments again on a problem system. 3. Run the latest antivirus programs on a problem system.
  16. Hi, The limitation is removed in forthcoming JET 6.0 (closed beta is available now, you may contact Support to get access to it). Both ways you describe are good to solve the problem with the current version of JET. The first way in cooperation with Global Optimizer is preferrable in terms of performance (until dynamic loading becomes too massive). The second is preferrable in terms of compilation time.
  17. So, why do not you do the same with xFunction? "free" is external function so there is no problem to call it from java with xFunction. Yes, since "free" takes C pointer as argument, you should have Pointer in Java code to be able to call the function. However, your problem that you choosed "CSTRING" to describe "name" field, which means that you would like to work with "name" as with String not as with Pointer. However it contrudicts with your need to free memory pointed by the pointer. So, if you describe "name" field as "char*", you will be able to free memory form Java with xFunction. Howewer, it may be inconvinient for you to have "name" as Pointer, if you need it as Java String at some point of your Java code. You may solve this problem by two ways: 1. Write Java code that converts Pointer to char to Java String. It is possible with xFunction methods (I may agree that xFunction might have the direct method for it) 2. Duplicate "name" field in your C code, so the structure would have 2 fields that point to the same memory. After that one of the field could be described as CString and another as "char*" in xFunction, and all you problems would be solved after that. It is technically impossible. xFunction has no knowledge about how you allocate the memory in "C" code thus it can not automatically clenaup it. It would be real magic, if xFunction could make C language being managed .
  18. xFunction is not intended to manage memory of your C code. All what it does is calling external functions (that is why it is called xFunction ). As to your question, I have a question for you before answering: If it were C not Java code, how would you free the memory?
  19. You should call an external function that would free the memory.
  20. kit

    Jet 5, integrity of rt.jar in xjre

    If we're talking about Global Optimizer vs. JetPerfect, I must say that JetPerfect is suitable only for close world applications, while Global Optimzer can optimize any application. For instance, we have IntelliJ IDEA compiled with Global Optimizer in our testsuite and it wasimpossible to compile IDEA with JetPerfect. Often, JetPerfect'ed applications crashed on an attempt to load undetected class with "incomplete usg" message that you might be familiar with. A globaly optimized application just loads non-compiled classes dynamically and you may even miss this fact. That's why xjre folder is not just "stuff for Java Compatibility". P.S. We even thought to name Global Optimizer as JetPerfectII, however the negative experience with the "incomplete usg" message that many JetPerfect users had been complaining for years convinced us to throw the thought away.
  21. kit

    Jet 5, integrity of rt.jar in xjre

    After deployment, rt.jar in xjre (rt) folder contains only those classes not proved by the Global Optimizer to be used by your application. Since ClassLoader.class is always used by your Java application implicitly, it will never be in rt.jar and will not be dynamically compiled at run-time. As a result, it cannot be altered. As to other classes from rt.jar that remain after deployment, theoretically they can be altered by a malefactor. If the Test Run was not performed thoroughly and your application loads some classes from the rest of rt.jar at some execution path, then the malefactor can feed furtively altered classes to the JET runtime. However I cannot imagine what he/she can steal/get with it.
  22. kit

    Apple OS X Support?

    Unfortunately no. The cost of Mac OSX support is still too high and we cannot afford it at this time. Now we are concentrated on Java 6 support.
  23. kit

    JDK 1.5 Update 12 support

    We have read Release Notes of Update 12 and have not found any critical issue fixed there too. So we do not plan to support Java SE 5.0 Update 12 in JET 5.0 now until a customer reports that it fixes his/her particular problem.
  24. kit


    What JRE version do you use on Vista? Type "java - version" and post the output.
  25. kit

    StringIndexOutOfBoundsException : -1

    The piece of code you sent is not sufficient to reveal the problem. For instance, the following small sample works fine both with Sun JVM and Excelsior JET: -------------------------- TFtest.java --------------- import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TFtest { public static void main(String[] args) { JFrame frame = new JFrame("Text Field Test"); frame.setSize (50, 50); final JTextField tf = new JTextField(); tf.addKeyListener(new KeyAdapter(){ public void keyReleased(KeyEvent evt){ String quantityText = tf.getText(); if ( !Character.isDigit( evt.getKeyChar() ) ) { if(Character.isLetter(evt.getKeyChar())){ String stringQuantity = quantityText.substring( 0, quantityText.lastIndexOf( evt.getKeyChar() ) ); } } } }); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.getContentPane().add(tf); frame.setVisible(true); } } ---------------------------------------- So, we need a complete sample to reproduce the problem.