CFML compiles to java byte code but other than that, integration is rather poor. Just like in the pre CFMX days, you don't have to know much about where and how the code is executed. You're not encouraged to dive one level deeper, you can even disable java if you want. To me, CFML doesn't feel like a JVM language, in contrast to Scala and Groovy. I have no experience with the other languages.
@Jeroen, thanks for your comments. I see what you are saying, though I don't really agree.
> you don't have to know much about where and how the code is executed
I'm not sure if you're saying this is a bad thing, but I would consider it a good thing. If I wanted to think about how Java worked all day long, I'd write in Java.
> You're not encouraged to dive one level deeper
Says who? You might feel that way due to your own anecdotal experience, but I've learned tons about Java (and even does some Java development of my own) due to my exposure to it in CF. As soon as you start doing any J2EE deployment, or tweaking memory management and garbage collection you are immediately thrust into Java. I give out Java advice and recommend Java tools all the time on mailing lists.
Most major frameworks I know of rely on tight Java integration. ColdBox MVC for instance makes regular use of soft references, concurrent hash maps, and identity hash codes straight from the Java underpinning of CFML, not to mention ColdBox plugins such as JavaLoader, JSMin, AntiSamy and the new Couchbase CFML SDK-- all built on Java.
And finally, I wanted to point out that CF Summit last year (Adobe's dedicated CF conference) had an entire session dedicated to Java interactions in CFML.
http://cfsummit.adobeevents.com/schedule/5245d928ecdcc47e23000009 If you don't feel encouraged to dive deeper in understanding Java I'd say you're not looking very hard :)
> you can even disable java if you want.
Yes, for security. Shared hosts are the only people I've seen do that. You can't really run any modern libraries without it.
> To me, CFML doesn't feel like a JVM language
That's your opinion that fair enough-- I can't argue with that.
I would to also add that the benefits of being a language that runs on the JVM go well past the code I write. There are inherent performance, scalability, stability, and portability benefits that come with the JVM. A dev could write an app in CF and never even touch Java and they would still get JIT compilation, hot spot optimizations, etc.
Jeroen Knoef
CFML compiles to java byte code but other than that, integration is rather poor. Just like in the pre CFMX days, you don't have to know much about where and how the code is executed. You're not encouraged to dive one level deeper, you can even disable java if you want. To me, CFML doesn't feel like a JVM language, in contrast to Scala and Groovy. I have no experience with the other languages.
Brad Wood
@Jeroen, thanks for your comments. I see what you are saying, though I don't really agree.
> you don't have to know much about where and how the code is executed
I'm not sure if you're saying this is a bad thing, but I would consider it a good thing. If I wanted to think about how Java worked all day long, I'd write in Java.
> You're not encouraged to dive one level deeper
Says who? You might feel that way due to your own anecdotal experience, but I've learned tons about Java (and even does some Java development of my own) due to my exposure to it in CF. As soon as you start doing any J2EE deployment, or tweaking memory management and garbage collection you are immediately thrust into Java. I give out Java advice and recommend Java tools all the time on mailing lists.
Most major frameworks I know of rely on tight Java integration. ColdBox MVC for instance makes regular use of soft references, concurrent hash maps, and identity hash codes straight from the Java underpinning of CFML, not to mention ColdBox plugins such as JavaLoader, JSMin, AntiSamy and the new Couchbase CFML SDK-- all built on Java.
And finally, I wanted to point out that CF Summit last year (Adobe's dedicated CF conference) had an entire session dedicated to Java interactions in CFML. http://cfsummit.adobeevents.com/schedule/5245d928ecdcc47e23000009 If you don't feel encouraged to dive deeper in understanding Java I'd say you're not looking very hard :)
> you can even disable java if you want.
Yes, for security. Shared hosts are the only people I've seen do that. You can't really run any modern libraries without it.
> To me, CFML doesn't feel like a JVM language
That's your opinion that fair enough-- I can't argue with that.
I would to also add that the benefits of being a language that runs on the JVM go well past the code I write. There are inherent performance, scalability, stability, and portability benefits that come with the JVM. A dev could write an app in CF and never even touch Java and they would still get JIT compilation, hot spot optimizations, etc.