Hello. Comments and more questions below in the text...
Thanks ! -- Ephemeris Lappis > -----Message d'origine----- > De : Michael Neale [mailto:[EMAIL PROTECTED] > Envoyé : vendredi 20 janvier 2006 08:02 > À : user@drools.codehaus.org > Objet : Re: [drools-user] [Drools][5.2.1] JDKs support in rules expression > > hehehehe... good question. > > Well, in 2.1 it used Janino. Which is a simple in memory compiler. So the > first time you go to execute a rule that has embedded code, it would > compile > and cache it on the fly. Kind of lazy compilation. Right, this is the version I'm using... > > In 2.5, its a bit different. It actually takes the "java" (actually it can > be other semantic languages as well, such as groovy, there is even a .net > version now) and generates a little piece of code (all in memory), > includes > your functions (if any), then it sends this code to "JCI" which is a > generic > java compiler interface (which supports more then just java). > > JCI then invokes the appropriate runtime compiler (by default in 2.5 is is > eclipse jdt, which is definately not javac !), and ends up building a > binary > "ddj" (which is really a jar) of all the rules, which is then loaded into > the ruleset. This all happens behind the scenes, but you can get the "jar" > out (both source and binary) to have a look. So in effect the rules run > off > the compiled version (meaning fast startup times as no lazy compilation). Does it mean that the JDT will come packaged along with Drools ? > > To make it dynamic, package names used by the rulesets are unique, so when > a > new version is loaded, its actually a different "package" name behind the > scenes. Also, a custom classloader is used, not the system classloader (so > it shouldn't be effected by the runtime environment). > > It is important to note that this all happens in memory, unless you want > to > persist the binary/source forms of the rules for deployment purposes. So > no > conflict with J2EE restrictions about files, system settings etc. Except for class loaders uses ! But should it be a true problem, depending on the application server ? > > For groovy all of the above applies. For Jython, there is no compiling, > its > totally script based dynamic. > > Phew - does that answer your question ? For sure ! > > > > On 1/20/06, Ephemeris Lappis <[EMAIL PROTECTED]> wrote: > > > > Hello. > > > > I'm not absolutely sure I have understood well how it works. > > > > Does Drools translate DRL files in java source files, and then compile > > them > > using a javac compiler ? Or is there another kind of dynamic interpreter > > that just shares the java language syntax, in case of this semantic is > > used > > ? > > > > What are the technical impacts, for instance in use cases inside J2EE > > plaforms (EJB specifications come with many programming restrictions), > or > > when a simple JRE is available (embedded systems for example) ? > > > > Thanks. > > > > -- > > Ephemeris Lappis > > > > > > -----Message d'origine----- > > De: Mark Proctor [mailto:[EMAIL PROTECTED] > > Envoyé: vendredi 20 janvier 2006 04:20 > > À: user@drools.codehaus.org > > Objet: Re: [drools-user] [Drools][5.2.1] JDKs support in rules > expression > > > > Drools 2.1 uses Janino, which is jdk1.4. > > Drools 2.5 can use either Eclipse JDT (default) or janino. Eclipse JDT > > works fine with JDK1.5 > > > > > > Mar > > Ephemeris Lappis wrote: > > > Hello. > > > > > > > > > > > > I've already successfully checked that Drools supports JDK 1.5 at > > runtime > > > for the java code that calls it. > > > > > > But it seems the code snippets in rules expression are rejected if > some > > JDK > > > 1.5 features, like the new for loops, are used. > > > > > > > > > > > > Could somebody confirm that ? > > > > > > Or is there a way to make Drools compile JDK 1.5 rules ? > > > > > > > > > > > > Thanks. > > > > > > > > > > > > -- > > > > > > Ephemeris Lappis > > > > > > > > > > > > > > > > > > >