IBM releases Jikes 1.20

Discussions

News: IBM releases Jikes 1.20

  1. IBM releases Jikes 1.20 (14 messages)

    IBM has released version 1.20 of Jikes, their open source Java compiler. Version 1.20 implements some of Java 1.5, adds new diagnostics including the detection of overflow in integer constant expressions, and has fixed assorted bugs.

    Excerpt
    Many new diagnostics have been added. These include detection of overflow in integer constant expressions, serialization-related checks made by Java 1.5's javac, detection of locals shadowing fields (often caused by an unfinished refactoring that promotes a local to a field) and fields in subclasses that hide fields in superclasses. New command-line options generalize the old -nowarn/+Z to also allow all warnings to be considered errors (with +Z2). The default on vs. off state of several warnings added in 1.19 have been changed, by popular demand.

    Jikes is more robust in the face of a .java file on the command line that requires another .java file that has a compilation error. However, this area can always be improved, so we appreciate concise test cases where a single error is causing a chain of error messages.

    Jikes makes a better attempt to detect and warn the user of system errors, such as file not found or directory not writeable.

    The set of legal characters in identifiers has grown according to Unicode 4.0. Now surrogate character pairs are parsed correctly, according to the improvements in the JDK 1.5 java.lang.Character, so that something like \ud801\udc00 is now an identifier.

    Jikes now correctly detects an attempt to use a non-static member class from a static one, without proper qualification. Since javac does not yet correctly enforce this, it is likely that existing code has the following bug:

    class Outer {
      class NonStatic {}
      static class Static {
        NonStatic a; // illegal, jikes now correctly gives an error
        Outer.NonStatic b; // legal, the proper workaround
      }
    }

    As always, several bugs from the Jikes bug database have been closed.

    Build support has been slightly improved. Jikes now builds correctly with parallel make invocations, will use RTTI in debugging mode to help diagnose cast errors, and is better at detecting a working iconv that meets jikes' needs, as well as automagically configuring without --encoding support if there is no such iconv option. Upstream automake and autoconf improvements allow jikes to compile and install on more platforms.

    The `-target 1.5' option produces class files compatible with Sun's JDK 1.5 virtual machine (the biggest changes are that class literals take much less space, and String concatenation is more efficient). Also, the EnclosingMethod attribute is now used to improve reflection. Fixed bug where compiling with classfiles produced by JDK 1.5 caused an assertion error when read by jikes.

    Some beta support for JDK 1.5 features is being added. To try it out, you must build jikes yourself, and use the --enable-source15 configure option. Once compiled, the following items are supported by using the `-source 1.5' command line argument (but possibly with bugs):

    • Hexadecimal floating point literals, documented in java.lang.Float.valueOf(String) and similar to the C99 language. For example, 0x1.8p+0d is now the same as 1.5d.
    • The enhanced loop of JSR 201 is (mostly) supported. The only non-specified behavior is a compiler hack to allow using a non-Object variable when looping over an iterator, since generic iterators are not yet supported. For example, this code:

      for (int i : new int[] {1});
        for (Object o : Collections.singleton(""));

      is short for:
        int[] ia = new int[] {1};
        for (int i1 = 0; i1 < ia.length; i1++) {
          int i = ia[i1];
        }
        for (Iterator it = Collections.singleton("").iterator(); i.hasNext(); ) {
          Object o = i.next();
        }
    • Generics (type parameters) parse correctly, but are not otherwise supported.
    • Annotations parse correctly, but are not otherwise supported.
    • Variadic methods (varargs) parse correctly, but are treated as though the final parameter used '[]' instead of '...'.
    • Enumerations parse correctly, but are not otherwise supported.
    • Static imports parse correctly, but are not otherwise supported.
    • Autoboxing and autounboxing are not supported.
    Jikes 1.20 Release Notes

    Threaded Messages (14)

  2. IBM releases Jikes 1.20[ Go to top ]

    I was trying to build the jikes1.20 in SUN Solaris, but had problem with tuple.h assertion when running jikes. How to build with encoding option on SUN Solaris?

    Any help would be highly appreciated, Thanks.
  3. Boycott[ Go to top ]

    I haven't tried 1.20, but if it spits out a SINGLE 'go buy some book' warning without warnings being explicitly turned on, I propose a boycott of this ludicrous policy.

    I want my compiler to compile with, not debate with and try to convince that yes, I actually do really have a good reason for violating one of its precious little 'I read a book and it told me to...' rules.
  4. Boycott[ Go to top ]

    You can turn warnings off if messages are offensive, but jikes performs 5-7 times faster then java based compiler which the huge advantage in my view.
  5. Warnings[ Go to top ]

    You can turn warnings off if messages are offensive...

    Well, you really cannot... "Effective Java" and JLS2 warning, introduced in 1.19, cannot be turned off. And, if your style does not match "recommended" way of naming things, your only option is to override checks (like isBadStyle* in lookup.cpp) in the source and recompile.

    Besides being quite obnoxious with its "recommendations" Jikes loudly complans about all org.apache.jsp.*.Page_jsp classes, because Jasper dared to use underscore in names, so lets fill the log with verbose Semantic Warnings.

    Good thing though is that it comes with the source and after commenting a bit here and changing a little some conditions there it can be tailored to match ones preferences :-)
  6. Warnings[ Go to top ]

    Actually the naming standards warnings are now turned off by default on 1.20. And you *can* turn off ALL warnings with the -nowarn option, or selective warnings with the various +P options. Actually using the software before flaming will do you some good.
  7. Warnings[ Go to top ]

    Actually using the software before flaming will do you some good.
    You are right :+) 1.19 left so much bitter aftertaste that I patched 1.20 without checking it first. Though this time they made it right.
  8. Warnings[ Go to top ]

    Marcus: And you *can* turn off ALL warnings with the -nowarn option, or selective warnings with the various +P options. Actually using the software before flaming will do you some good.

    Most of us at one time or another did try it, and the verbosity of Jikes has been second only to JBoss with all logging options turned on. Jikes has always represented the oddest trade-off: "You can use our compiler for no cost, and it's really fast, but it will irritate the hell out of you." So now that 1.20 fixes its (if indeed it does) the onus is on them to get that message out.

    I've been using Jikes on and off (mostly off) since it was first announced. When it can be used as a drop-in replacement for JavaC (same default behavior, same command line options,) then I'll take another look ;-)

    Peace,

    Cameron Purdy
    Tangosol, Inc.
    Coherence: Clustered JCache for Grid Computing!
  9. Jikes faster?[ Go to top ]

    Currently i use ANT to build/compile. By changing build.compiler i didnt see any performance gain at all.
    Currently regular javac (1.3.1_09) and jikes 1.18 (I didnt use the latest because 1.18 is defaulted to jdk 1.3) gave me a 45 second compile time.
    Any suggestions?
  10. Hi, do I have to compile my source with Jikes to get the speed benefits, or does it produce exactly the same code as the jdk would (assuming that the speed benefit come from better translation to the os environment)?
  11. Jikes is only a compiler, not a JRE, though I guess there is a JVM with the same name, but hardly anyone uses it. Compilation is much faster than Sun's javac, so the main advantage of jikes is for things like JSPs. It is also handy for developers who hit compile 50 times a day.
  12. sorry to post to all.. been searching for this guy...

    Ken, will you email me please!

    nstowe at thettgroup dot com

    Thanks :)
  13. Unable to compile my code[ Go to top ]

    What does it mean?

    Found 1 semantic error compiling "D:/CVSROOT/FT/CoreFT/Src/ejb/com/ft/cashedge/srt/util/BusinessCalendar.java":

                                                                   < 12. public class BusinessCalendar extends GregorianCalendar{
       . . .
       226. }
            >
    *** Semantic Error: A class file was not generated for the type "com.ft.cashedge.srt.util.BusinessCalendar" because a library method that it depends on was not found. See system messages for more information.
  14. Ant + Jikes[ Go to top ]

    I am using ant with jikes. I have set the property build.compiler, but getting some errors. Please give me some idea what other changes i have to made.
  15. IBM releases Jikes 1.20[ Go to top ]

    Is Jikes available for HP-UX?