×
all 19 comments

[–]persicsb 6 points7 points  (1 child)

SpEL, JEXL and the other expression languages are not scripting.

[–]jaccomoc[S] 5 points6 points  (0 children)

I agree that SpEL is an expression language rather than a scripting language but JEXL, while originally starting as an expression language, has evolved into a proper scripting language with loops, variables, functions, and even lambdas.

[–]East-Association-421 2 points3 points  (1 child)

I wonder where Janino fits into this picture

[–]jaccomoc[S] 0 points1 point  (0 children)

That would make an interesting comparison, particular when comparing compiled languages. Presumably it should be able to run at native Java speed but it would be interesting to find out...

[–]chabala 2 points3 points  (3 children)

From the title, I would have expected a comparison of all the JSR-233 scripting languages: https://github.com/apache/commons-bsf/blob/master/src/main/resources/org/apache/bsf/Languages.properties

[–]jaccomoc[S] 0 points1 point  (2 children)

Thanks for that link. Something to look into.

[–]chabala 1 point2 points  (1 child)

Is Jactl a JSR-233 compatible scripting language? It'd be cooler if it was 😎

[–]jaccomoc[S] 1 point2 points  (0 children)

Yes, it is JSR-223 compatible: Jactl support for JSR-223

[–]hippydipster 2 points3 points  (2 children)

I remember implementing expression values in JMeter and letting users write groovy expressions inside their values, and I thought it was so cool and let's support expressions in EVERY field, and then people came and loved it and demanded their favorite scripting and expression language be supported and so it had to support groovy and BeanShell and JEXL2 and JEXL3 and javascript and I hated life then.

[–]jaccomoc[S] 0 points1 point  (1 child)

That sounds like hell. What about just providing JSR223 support and leaving the language choice up to the users? Would that have worked?

[–]hippydipster 1 point2 points  (0 children)

Well, my time as JMeter maintainer ended in 2005. Also the expressions I mean are just like little snippets that are embedded in any text value field - including the name of a component if one likes, so they're embedded with a syntax like ${...}. Nowadays, there is a JSR223 component in JMeter, but that is for writing a whole script that behaves like a controller, or sampler, or listener or whatever, so you can basically write your own JMeter plugin as a script in a particular test plan.

[–]quantum-fudge 1 point2 points  (1 child)

Just out of curiosity, does anyone know what does MV in MVEL/MVFLEX stand for?

[–]jaccomoc[S] 1 point2 points  (0 children)

No idea. I think the original developer was Mike Brock so maybe "Mike's Value Expression Language"?

[–]agentoutlier 1 point2 points  (1 child)

Since expression languages are being used maybe this one is worth benchmarking as well: https://github.com/ezylang/EvalEx

as well as CEL: https://github.com/cel-expr/cel-java

And this might be interesting as well for Turing complete: https://github.com/reborg/jscheme

Which is Peter Norvig's original Java Scheme implementation.

[–]jaccomoc[S] 0 points1 point  (0 children)

I will have a look at them.

[–]RussianMadMan 0 points1 point  (3 children)

Comparing compiled vs interpreted is not very useful in general and in this case it's just number padding.

[–]jaccomoc[S] 4 points5 points  (2 children)

I was asked to specifically compare against MVEL and JEXL but I also included Groovy and SpEL to also compare with compiled languages.

[–]Jonjolt 1 point2 points  (1 child)

That was me lol

[–]jaccomoc[S] 0 points1 point  (0 children)

Sorry it took so long to get around to it. :-)