Jump to content
Excelsior Forums


Excelsior Staff
  • Content count

  • Joined

  • Last visited

Everything posted by snowman

  1. snowman

    Please make JET compatible with upx

    Compressing an executable file has a big disadvantage: it will not be mapped to memory by the operating system and therefore your application will need more RAM. Moreover, if you run two copies of the application, or two applications that use the same DLLs, memory pages will not be shared among processes, thus increasing RAM usage further. Then, Excelsior Installer already supports LZMA compression, so there won't be any significant download size reduction if you compress the executables before packaging. Finally, with all the optimization and compression methods ever invented you won't bring the size of "Hello, World" written in Java even close to the size of "Hello, world" written in C. The Java runtime overhead would remain very big for a small utility. That said, I really don't understand why do you care so much about disk footprint. A typical desktop computer has 100 times more hard disk space than RAM. I still have gigabytes of free disk space on my workstation, but regular slowdowns due to Firefox eating half of its 512 MB of RAM drive me crazy. It is memory usage and in some cases download size that you have to care about, not disk footprint. Embedded systems are a totally different story of course.
  2. snowman

    Please make JET compatible with upx

    Excelsior JET generates executables that are perfectly valid from the operating system standpoint, otherwise they would not load. So it is the executable packers that have to be fixed. There is a chance that we'll implement our own packer, but I cannot commit to any particular availability date.
  3. snowman

    Licensing question

    Hello, 1. If you have a license for Excelsior JET, you can distribute your compiled application royalty-free, in any number of copies, provided your end-users will run it on general purpose desktop computers and/or servers. Only applications deployed to embedded systems are subject to royalties. Third-party plug-ins would be handled by the JIT compiler. 2. We do not plan any special offers on new license purchases in the near future. But we can negotiate a special price on special conditions. For instance, we have provided free licenses to a few non-commercial Java projects in exchange for some free marketing for Excelsior JET. See e.g. the JAlbum download page. If you are interested, email our Sales Dept.
  4. snowman

    reverse engineering

    We have certain internal tools to aid field engineering, and of course our engineers know the product inside out, so they have an advantage over the rest of the world. But without debug information the tools are of not much help, and optimized x86 code is much harder to comprehend than a decompiled class file, for everyone. lg Clemens: Some of the high-level information has to be preserved, e.g. for the reflection to work. So it may be a good idea to do name obfuscation and string encryption before native compilation. See Knowledge Base Article 000023, "HOWTO: Maximize protection of your application against reverse engineering" for more information.
  5. Just use "x<>y" or "x#y" instead of "NOT (x=y)".
  6. Run "xlink @obj\tmp.lnk" from the command line and seek the error message in the output.
  7. snowman

    more vista install problems

    As a side note, you do not need to install MP1 before MP2, they are cumulative.
  8. AND on bitsets is denoted by "*" in ISO Modula-2. You probably need bitwise AND on cardinals. Turn on the option M2EXTENSIONS, and the operators AND, OR, and NOT should start working on cardinals.
  9. What does that operator do in SBM2?
  10. snowman

    GDI+ problems

    As far as I can recall, there once was a (deprecated) plain C API for GDI+. The C++ API used to be nothing more than a wrapper for that. You could try searching MSDN library.
  11. You seem to be migrating from a legacy compiler. I highly recommend that you read the Chapter "XDS Modula-2" in the User's Guide.
  12. See Native XDS-x86 (or XDS-C) User's Guide, Section XDS Modula-2->Source code directives->Conditional compilation
  13. There is an option GENCPP, but it won't make much difference.
  14. snowman

    GTK+ in Modula 2

    For convenience, you may copy the xc.tem file and modify it to include the extra libraries, then specify the modified file in the -template equation in your prj file. ... !if (env_target="x86linux") then ! "\tgcc $(LFLAGS) -o $(TARGET) $(OBJ) $(XLIBS) $(TSLIBS) $(XDSLIB) $(XMACLIBS) -lm -lncurses\n" !elsif (env_target="linux") or (env_target="aix") then ... Just add [tt]" -lgtk"[/tt], [tt]" -lgdk"[/tt], etc. after [tt]"-lncurses"[/tt].
  15. The XDS core is bootstrapped. The runtime is written in Modula-2 and a bit of assembly (in case of Native XDS-x86), and the compiler is written in Oberon-2. Other components: IDE - C (do not ask why ) XD - Modula-2 XLINK - C++ etc.
  16. See this post in Excelsior blog.
  17. Smart linking won't help that much due to interdependencies between the standard API classes. As I said, run [tt]java -verbose HelloWorld[/tt] and count the number of classes loaded. It is also unsafe to omit classes and methods not explicilty imported and referenced, as you may do in C++, because they may be loaded and referenced by name using JNI or reflection. We have an idea on solving the latter problem, though. Again, stay tuned.
  18. Ok, now that it's official, we do not plan to open source Excelsior JET in the near- to mid-term future, which means we may not use the GPL-ed version of the JDK. Note also that Sun is not going to open-source the TCK tests, and if you may not test your implementation for compatibility, you may not call it "Java", and compatibility is important for our customers. So we shall continue using the Java SE API implementation under the Commercial Use license, nothing will change for us in that regard. A 100KB app is hardly possible in a compatible implementation. Just run "Hello, World" on HotSpot with [tt]-verbose[/tt] and count the classes that get loaded. "A few MB" sounds more realistic, depending of course on what exactly "a few" evaluates to. Stay tuned.
  19. To the best of my knowledge, this was not officially announced by Sun. I see little sense in commenting on something that may turn out not to be true.
  20. snowman

    Excelsior Birthday Sale

    Excelsior LLC will turn seven years old tomorrow, October 8th, 2006. As usual, we are offering very special prices on selected products in connection with our anniversary. Excelsior JET 4.5, Professional Edition for Windows - $1,150 $2,300 Excelsior JET 4.5, Professional Edition for Linux - $1,150 $2,300 Excelsior JET 4.5, Professional Edition for Windows & Linux - $1,725 $3,450 One year of Standard Support is included. You can use any payment method, but the coupon will only work if you place your order between 12:00 a.m. and 11:59 p.m. October 8th, 2006 Central European Time (GMT+2). Should you need to enter the coupon code later in the order process, it is "7-YEARS".
  21. I will spend the last two weeks of October in San Francisco Bay Area on business. If you are an Excelsior JET user based in Silicon Valley or will be there at that time by chance, I would appreciate an opportunity to meet you in person to learn about your use of our product and to discuss how we could make it serve your needs better. I would also be happy to conduct a presentation of our products and services at your premises, at your JUG meeting, or elsewhere. Please drop me a line at dleskov@excelsior-usa.com if you are interested. Dmitry Leskov Director of Marketing Excelsior LLC
  22. Silly me! I overlooked the fact that you are using Win32 API directly. What if you call Storage.ALLOCATE after GlobalAlloc returns NIL? Will it fail or succeed?
  23. As far as I can recall, Native XDS-x86 2.51 allocates for the heap the largest contiguous block of memory available from the operating system, provided of course you specify some huge value for HEAPLIMIT. It seems the size of such block on your system is 1.4GB.
  24. Would you please modify your C and StonyBrook M2 programs so that they fill those arrays after allocation and post the results here?