Tomi Terentjeff // Java 2 Enterprise Editionia on pidetty arvossa osin Java-kielen staattisuuden ansiosta. Koska Java-koodi on staattista, se voidaan kääntää tavukoodiksi, joka ajetaan virtuaalikoneessa. Virtuaalikone puolestaan osaa lennosta kääntää tavukoodin natiiviksi ajettavaksi konekoodiksi. Tavoitteena on mahdollisimman tehokkaasti suorittuva ohjelmakoodi. Lisäksi staattisen kielen etuna on eräinen ohjelmointivirheiden paljastuminen jo käännösaikana.
Todellisuudessa kääntävän Java-virtuaalikoneen arvo web-sovelluksen kokonaissuorituskyvylle ei ole useinkaan merkittävä, koska tietokantapohjaisissa websovelluksissa sovelluksen pullonkaula muodostuu helposti tietokantapalvelimeen eikä itse sovelluskoodiin. Tätä pullonkaulaa voidaan lievittää välimuistien (esim. memcached) sekä tietokantapalvelinten hajauttamisella (esim. data striping).
Java-webohjelmistojen kehittäjät käyttävät suosittuja komponentteja, jotka osaltaan nopeuttavat sovelluksen kehittämistä. Esimerkiksi Hibernate on suosittu ORM Javalle, missä luokkien ja tietokantataulujen väliset suhteet määritellään XML:ää käyttäen.
Käytännössä näyttää kuitenkin käyneen niin, että ketterä web-ohjelmistokehitys on nykyisin kahden dynaamisen tulkattavan kielen, Rubyn ja Pythonin, taistelu: Huippusuositulla Ruby on Rails (RoR) -web-ohjelmistokehyksellä on vastassaan Python web-kehitys, jossa kehysvaihtoehtoina ovat esimerkiksi Django, Pylons ja Pylonsin päälle rakennettu TurboGears 2.0 (TG2).
Gemilossa käytetään näistä kahta jälkimmäistä ja kokemukset ovat olleet lupaavia.