# Lucee compared to Java

## JVM

Like Java, Lucee is also a JVM (Java Virtual Machine) based language, means the source code is compiled to Java bytecode, so it can be executed on the JVM. In difference to other JVM languages Lucee comes with it owns very powerful runtime environment. So it is not only a different syntax to do Java bytecode, like for example Groovy.

## Server

Changes to Lucee are made with the Lucee administrator.  In Java projects, comparable changes, especially relating to injectable resources, are often made in the Java container in use.

## Pros & cons

### Pros of Lucee

CFML enables very fast prototyping

CFML typically allows for faster development

CFML does not have strong typing, which some developers may prefer

CFML uses a fraction of the amount of code lines Java does

CFML simplifies coding by abstracting away many details from developers

Lucee can be extended with Java classes and libraries in different ways very easy

Lucee can access a service layer written in Java

No external libraries required for datasources, Amazon, zipping and many other functions

Because Lucee Server can be deployed onto any servlet container, clients may be more likely to accept Lucee than a non-Java product

Training staff to use Lucee will take a lot less time than Java

IDEs and editors can be much simpler

Existing JSP taglibs can be used in CFML pages

No need to build as this is done when the code is run for the first time (runtime compiler)

### Cons of Lucee

CFML does not have strong typing, whereas developers may prefer Java's strong typing

Clients may be resistant to change to Lucee

Lucee Server & CFML do not enforce practices whereas Java does

CFML may not be as flexible as Java because options are abstracted away

IDEs and editors are not as fully featured as Java environments