Jevgeni Kabanov "Towards a more productive Java EE ecosystem" | University of Tartu

Contacts of UT units

Faculty of Arts and Humanities
Faculty phone: 
+372 737 5341
Faculty address: 
Jakobi 2, rooms 116–121, 51005 Tartu
  • Dean's Office
    Faculty phone: 
    + 372 737 5341
    Faculty address: 
    Jakobi 2, rooms 116–121, 51005 Tartu
  • Institute of History and Archaeology
    Faculty phone: 
    +372 737 5651
    Faculty address: 
    Jakobi 2, 51005 Tartu
  • Institute of Estonian and General Linguistics
    Faculty phone: 
    +372 737 5221
    Faculty address: 
    Jakobi 2, 51005 Tartu
  • Institute of Philosophy and Semiotics
    Faculty phone: 
    +372 737 5314
    Faculty address: 
    Jakobi 2, rooms 309–352, 51005 Tartu
  • Institute of Cultural Research
    Faculty phone: 
    (+372) 737 5223
    Faculty address: 
    Ülikooli 16, 51003 Tartu
  • School of Theology and Religious Studies
    Faculty phone: 
    +372 737 5301
    Faculty address: 
    Ülikooli 18–310, 50090 Tartu
  • College of Foreign Languages and Cultures
    Faculty address: 
    Lossi 3, 51003 Tartu
  • Viljandi Culture Academy
    Faculty phone: 
    +372 435 5232
    Faculty address: 
    Posti 1, 71004 Viljandi
Faculty of Social Sciences
Faculty phone: 
+372 737 5957
Faculty address: 
Lossi 36, 51003 Tartu
  • Dean's Office
    Faculty phone: 
    + 372 737 5900
    Faculty address: 
    Lossi 36, 51003 Tartu
  • Institute of Education
    Faculty phone: 
    +372 737 6440
    Faculty address: 
    Salme 1a–29, 50103 Tartu
  • Johan Skytte Institute of Political Studies
    Faculty phone: 
    +372 737 5582
    Faculty address: 
    Lossi 36–301, 51003 Tartu
  • School of Economics and Business Administration
    Faculty phone: 
    +372 737 6310
    Faculty address: 
    Narva mnt 18, 51009 Tartu
  • Institute of Psychology
    Faculty phone: 
    +372 737 5902
    Faculty address: 
    Näituse 2, 50409 Tartu
  • School of Law
    Faculty phone: 
    +372 737 5390
    Faculty address: 
    Näituse 20–324, 50409 Tartu
  • Institute of Social Studies
    Faculty phone: 
    +372 737 5188
    Faculty address: 
    Lossi 36, 51003 Tartu
  • Narva College
    Faculty phone: 
    +372 740 1900
    Faculty address: 
    Raekoja plats 2, 20307 Narva
  • Pärnu College
    Faculty phone: 
    +372 445 0520
    Faculty address: 
    Ringi 35, 80012 Pärnu
Faculty of Medicine
Faculty phone: 
+372 737 5326
Faculty address: 
Ravila 19, 50411 Tartu
  • Dean's Office
    Faculty phone: 
    +372 737 5326
    Faculty address: 
    Ravila 19, 50411 Tartu
  • Institute of Biomedicine and Translational Medicine
    Faculty phone: 
    +372 737 4210
    Faculty address: 
    Biomeedikum, Ravila 19, 50411 Tartu
  • Institute of Pharmacy
    Faculty phone: 
    +372 737 5286
    Faculty address: 
    Nooruse 1, 50411 Tartu
  • Institute of Dentistry
    Faculty phone: 
    +372 731 9856
    Faculty address: 
    Raekoja plats 6, 51003 Tartu
  • Institute of Clinical Medicine
    Faculty phone: 
    +372 737 5323
    Faculty address: 
    L. Puusepa 8, 50406 Tartu
  • Institute of Family Medicine and Public Health
    Faculty phone: 
    +372 737 4190
    Faculty address: 
    Ravila 19, 50411 Tartu
  • Institute of Sport Sciences and Physiotherapy
    Faculty phone: 
    +372 737 5360
    Faculty address: 
    Jakobi 5–205, 51005 Tartu
Faculty of Science and Technology
Faculty phone: 
+372 737 5820
Faculty address: 
Vanemuise 46–208, 51014 Tartu
  • Dean's Office
    Faculty phone: 
    +372 737 5820
    Faculty address: 
    Vanemuise 46–208, 51005 Tartu
  • Institute of Computer Science
    Faculty phone: 
    +372 737 5445
    Faculty address: 
    Narva mnt 18, 51009 Tartu
  • Estonian Marine Institute
    Faculty phone: 
    +372 671 8902
    Faculty address: 
    Mäealuse 14, 12618 Tallinn
  • Institute of Physics
    Faculty address: 
    W. Ostwaldi 1, 50411 Tartu
  • Institute of Chemistry
    Faculty phone: 
    +372 737 5261
    Faculty address: 
    Ravila 14a, 50411 Tartu
  • Institute of Mathematics and Statistics
    Faculty phone: 
    +372 737 5860
    Faculty address: 
    Narva mnt 18, 51009 Tartu
  • Institute of Molecular and Cell Biology
    Faculty phone: 
    +372 737 5027
    Faculty address: 
    Riia 23, 23b–134, 51010 Tartu
  • Tartu Observatory
    Faculty phone: 
    +372 737 4510
    Faculty address: 
    Observatooriumi 1, Tõravere, 61602 Tartumaa
  • Institute of Technology
    Faculty phone: 
    +372 737 4800
    Faculty address: 
    Nooruse 1, 50411 Tartu
  • Institute of Ecology and Earth Sciences
    Faculty phone: 
    +372 737 5835
    Faculty address: 
    Vanemuise 46, 51003 Tartu
Institutions
  • Library
    Faculty phone: 
    +372 737 5702
    Faculty address: 
    W. Struve 1, 50091 Tartu
  • Youth Academy
    Faculty phone: 
    +372 737 5581
    Faculty address: 
    Uppsala 10, 51003 Tartu
  • Institute of Genomics
    Faculty phone: 
    +372 737 4000
    Faculty address: 
    Riia 23b, 51010 Tartu
  • Museum
    Faculty phone: 
    +372 737 5674
    Faculty address: 
    Lossi 25, 51003 Tartu
  • University of Tartu Natural History Museum and Botanical Garden
    Faculty phone: 
    +372 737 6076
    Faculty address: 
    Vanemuise 46, 51003 Tartu
Support Units
  • Administrative Office
    Faculty phone: 
    +372 737 5606
    Faculty address: 
    Ülikooli 18a, 51005 Tartu
  • Centre for Entrepreneurship and Innovation
    Faculty phone: 
    +372 737 6339
    Faculty address: 
    Lossi 3, III floor, 51003 Tartu
  • University Office in Tallinn
    Faculty phone: 
    +372 737 6600
    Faculty address: 
    Teatri väljak 3, 10143 Tallinn
  • Estates Office
    Faculty phone: 
    +372 737 5137
    Faculty address: 
    Ülikooli 18a, 51005 Tartu
  • Finance Office
    Faculty phone: 
    +372 737 5125
    Faculty address: 
    Jakobi 4, 51005 Tartu
  • Grant Office
    Faculty phone: 
    +372 737 6215
    Faculty address: 
    Lossi 3, III floor, 51003 Tartu
  • Information Technology Office
    Faculty phone: 
    +372 737 6000, IT-help: +372 737 5500
    Faculty address: 
    Ülikooli 18a, 51005 Tartu
  • Human Resources Office
    Faculty phone: 
    +372 737 5145
    Faculty address: 
    Ülikooli 18, rooms 302 and 304, 50090 Tartu
  • Internal Audit Office
    Faculty address: 
    Ülikooli 18-244, 51005 Tartu
  • Marketing and Communication Office
    Faculty phone: 
    +372 737 5687
    Faculty address: 
    Ülikooli 18, rooms 102, 104, 209, 210, 50090 Tartu
  • Office of Academic Affairs
    Faculty phone: 
    +372 737 5620
    Faculty address: 
    Ülikooli 18, 50090 Tartu
  • Procurement Office
    Faculty phone: 
    +372 737 6632
    Faculty address: 
    Ülikooli 18a, 51005 Tartu
  • Rector's Strategy Office
    Faculty phone: 
    +372 737 5600
    Faculty address: 
    Ülikooli 18, 50090 Tartu
  • Student Council
    Faculty address: 
    Ülikooli 18b, 51005 Tartu
  • University of Tartu Press
    Faculty phone: 
    +372 737 5945
    Faculty address: 
    W. Struve 1, 50091 Tartu
Other Units
  • University of Tartu Academic Sports Club
    Faculty phone: 
    +372 737 5371
    Faculty address: 
    Ujula 4, 51008 Tartu
  • Tartu Student Village
    Faculty phone: 
    +372 740 9959
    Faculty address: 
    Narva mnt 25, 51013 Tartu
  • Tartu Students’ Club
    Faculty phone: 
    +372 730 2400
    Faculty address: 
    Kalevi 24, 51010 Tartu
  • Tartu University Hospital
    Faculty address: 
    L. Puusepa 1a, 50406 Tartu
  • University of Tartu Foundation
    Faculty phone: 
    +372 737 5852
    Faculty address: 
    Ülikooli 18, 50090 Tartu
  • View all other units

Contacts of UT units

Faculty of Arts and Humanities
Faculty phone: 
+372 737 5341
Faculty address: 
Jakobi 2, rooms 116–121, 51005 Tartu
  • Dean's Office
    Faculty phone: 
    + 372 737 5341
    Faculty address: 
    Jakobi 2, rooms 116–121, 51005 Tartu
  • Institute of History and Archaeology
    Faculty phone: 
    +372 737 5651
    Faculty address: 
    Jakobi 2, 51005 Tartu
  • Institute of Estonian and General Linguistics
    Faculty phone: 
    +372 737 5221
    Faculty address: 
    Jakobi 2, 51005 Tartu
  • Institute of Philosophy and Semiotics
    Faculty phone: 
    +372 737 5314
    Faculty address: 
    Jakobi 2, rooms 309–352, 51005 Tartu
  • Institute of Cultural Research
    Faculty phone: 
    (+372) 737 5223
    Faculty address: 
    Ülikooli 16, 51003 Tartu
  • School of Theology and Religious Studies
    Faculty phone: 
    +372 737 5301
    Faculty address: 
    Ülikooli 18–310, 50090 Tartu
  • College of Foreign Languages and Cultures
    Faculty address: 
    Lossi 3, 51003 Tartu
  • Viljandi Culture Academy
    Faculty phone: 
    +372 435 5232
    Faculty address: 
    Posti 1, 71004 Viljandi
Faculty of Social Sciences
Faculty phone: 
+372 737 5957
Faculty address: 
Lossi 36, 51003 Tartu
  • Dean's Office
    Faculty phone: 
    + 372 737 5900
    Faculty address: 
    Lossi 36, 51003 Tartu
  • Institute of Education
    Faculty phone: 
    +372 737 6440
    Faculty address: 
    Salme 1a–29, 50103 Tartu
  • Johan Skytte Institute of Political Studies
    Faculty phone: 
    +372 737 5582
    Faculty address: 
    Lossi 36–301, 51003 Tartu
  • School of Economics and Business Administration
    Faculty phone: 
    +372 737 6310
    Faculty address: 
    Narva mnt 18, 51009 Tartu
  • Institute of Psychology
    Faculty phone: 
    +372 737 5902
    Faculty address: 
    Näituse 2, 50409 Tartu
  • School of Law
    Faculty phone: 
    +372 737 5390
    Faculty address: 
    Näituse 20–324, 50409 Tartu
  • Institute of Social Studies
    Faculty phone: 
    +372 737 5188
    Faculty address: 
    Lossi 36, 51003 Tartu
  • Narva College
    Faculty phone: 
    +372 740 1900
    Faculty address: 
    Raekoja plats 2, 20307 Narva
  • Pärnu College
    Faculty phone: 
    +372 445 0520
    Faculty address: 
    Ringi 35, 80012 Pärnu
Faculty of Medicine
Faculty phone: 
+372 737 5326
Faculty address: 
Ravila 19, 50411 Tartu
  • Dean's Office
    Faculty phone: 
    +372 737 5326
    Faculty address: 
    Ravila 19, 50411 Tartu
  • Institute of Biomedicine and Translational Medicine
    Faculty phone: 
    +372 737 4210
    Faculty address: 
    Biomeedikum, Ravila 19, 50411 Tartu
  • Institute of Pharmacy
    Faculty phone: 
    +372 737 5286
    Faculty address: 
    Nooruse 1, 50411 Tartu
  • Institute of Dentistry
    Faculty phone: 
    +372 731 9856
    Faculty address: 
    Raekoja plats 6, 51003 Tartu
  • Institute of Clinical Medicine
    Faculty phone: 
    +372 737 5323
    Faculty address: 
    L. Puusepa 8, 50406 Tartu
  • Institute of Family Medicine and Public Health
    Faculty phone: 
    +372 737 4190
    Faculty address: 
    Ravila 19, 50411 Tartu
  • Institute of Sport Sciences and Physiotherapy
    Faculty phone: 
    +372 737 5360
    Faculty address: 
    Jakobi 5–205, 51005 Tartu
Faculty of Science and Technology
Faculty phone: 
+372 737 5820
Faculty address: 
Vanemuise 46–208, 51014 Tartu
  • Dean's Office
    Faculty phone: 
    +372 737 5820
    Faculty address: 
    Vanemuise 46–208, 51005 Tartu
  • Institute of Computer Science
    Faculty phone: 
    +372 737 5445
    Faculty address: 
    Narva mnt 18, 51009 Tartu
  • Estonian Marine Institute
    Faculty phone: 
    +372 671 8902
    Faculty address: 
    Mäealuse 14, 12618 Tallinn
  • Institute of Physics
    Faculty address: 
    W. Ostwaldi 1, 50411 Tartu
  • Institute of Chemistry
    Faculty phone: 
    +372 737 5261
    Faculty address: 
    Ravila 14a, 50411 Tartu
  • Institute of Mathematics and Statistics
    Faculty phone: 
    +372 737 5860
    Faculty address: 
    Narva mnt 18, 51009 Tartu
  • Institute of Molecular and Cell Biology
    Faculty phone: 
    +372 737 5027
    Faculty address: 
    Riia 23, 23b–134, 51010 Tartu
  • Tartu Observatory
    Faculty phone: 
    +372 737 4510
    Faculty address: 
    Observatooriumi 1, Tõravere, 61602 Tartumaa
  • Institute of Technology
    Faculty phone: 
    +372 737 4800
    Faculty address: 
    Nooruse 1, 50411 Tartu
  • Institute of Ecology and Earth Sciences
    Faculty phone: 
    +372 737 5835
    Faculty address: 
    Vanemuise 46, 51003 Tartu
Institutions
  • Library
    Faculty phone: 
    +372 737 5702
    Faculty address: 
    W. Struve 1, 50091 Tartu
  • Youth Academy
    Faculty phone: 
    +372 737 5581
    Faculty address: 
    Uppsala 10, 51003 Tartu
  • Institute of Genomics
    Faculty phone: 
    +372 737 4000
    Faculty address: 
    Riia 23b, 51010 Tartu
  • Museum
    Faculty phone: 
    +372 737 5674
    Faculty address: 
    Lossi 25, 51003 Tartu
  • University of Tartu Natural History Museum and Botanical Garden
    Faculty phone: 
    +372 737 6076
    Faculty address: 
    Vanemuise 46, 51003 Tartu
Support Units
  • Administrative Office
    Faculty phone: 
    +372 737 5606
    Faculty address: 
    Ülikooli 18a, 51005 Tartu
  • Centre for Entrepreneurship and Innovation
    Faculty phone: 
    +372 737 6339
    Faculty address: 
    Lossi 3, III floor, 51003 Tartu
  • University Office in Tallinn
    Faculty phone: 
    +372 737 6600
    Faculty address: 
    Teatri väljak 3, 10143 Tallinn
  • Estates Office
    Faculty phone: 
    +372 737 5137
    Faculty address: 
    Ülikooli 18a, 51005 Tartu
  • Finance Office
    Faculty phone: 
    +372 737 5125
    Faculty address: 
    Jakobi 4, 51005 Tartu
  • Grant Office
    Faculty phone: 
    +372 737 6215
    Faculty address: 
    Lossi 3, III floor, 51003 Tartu
  • Information Technology Office
    Faculty phone: 
    +372 737 6000, IT-help: +372 737 5500
    Faculty address: 
    Ülikooli 18a, 51005 Tartu
  • Human Resources Office
    Faculty phone: 
    +372 737 5145
    Faculty address: 
    Ülikooli 18, rooms 302 and 304, 50090 Tartu
  • Internal Audit Office
    Faculty address: 
    Ülikooli 18-244, 51005 Tartu
  • Marketing and Communication Office
    Faculty phone: 
    +372 737 5687
    Faculty address: 
    Ülikooli 18, rooms 102, 104, 209, 210, 50090 Tartu
  • Office of Academic Affairs
    Faculty phone: 
    +372 737 5620
    Faculty address: 
    Ülikooli 18, 50090 Tartu
  • Procurement Office
    Faculty phone: 
    +372 737 6632
    Faculty address: 
    Ülikooli 18a, 51005 Tartu
  • Rector's Strategy Office
    Faculty phone: 
    +372 737 5600
    Faculty address: 
    Ülikooli 18, 50090 Tartu
  • Student Council
    Faculty address: 
    Ülikooli 18b, 51005 Tartu
  • University of Tartu Press
    Faculty phone: 
    +372 737 5945
    Faculty address: 
    W. Struve 1, 50091 Tartu
Other Units
  • University of Tartu Academic Sports Club
    Faculty phone: 
    +372 737 5371
    Faculty address: 
    Ujula 4, 51008 Tartu
  • Tartu Student Village
    Faculty phone: 
    +372 740 9959
    Faculty address: 
    Narva mnt 25, 51013 Tartu
  • Tartu Students’ Club
    Faculty phone: 
    +372 730 2400
    Faculty address: 
    Kalevi 24, 51010 Tartu
  • Tartu University Hospital
    Faculty address: 
    L. Puusepa 1a, 50406 Tartu
  • University of Tartu Foundation
    Faculty phone: 
    +372 737 5852
    Faculty address: 
    Ülikooli 18, 50090 Tartu
  • View all other units

Jevgeni Kabanov "Towards a more productive Java EE ecosystem"

Date: 
05.04.2013 - 14:15 to 16:00

Supervisor:
Prof Varmo Vene

Opponents:
Prof R. Nigel Horspool (University of Victoria, Canada)
Prof Tanel Tammet (Tallinna Tehnikaülikool)

Summary:
Since the Tim Berners-Lee famous proposal of World Wide Web in 1990 and the introduction of the Common Gateway Interface in 1993, the world of online web applications has been booming. In the nineties the Java language and platform became the first choice for web development in and out of the enterprise. But by the mid-aughts the platform was in crisis - newcomers like PHP, Ruby and Python have picked up the flag as the most productive platforms, with Java left for conservative enterprises.

However, this was not because those languages and platforms were significantly better than Java. Rather, the issue was that innovation in the Java ecosystem was slow, due to the ways the platform was managed. Large vendors dominated the space, committees designed standards and the brightest minds were moving to other JVM languages like Scala, Groovy or JRuby.

In this context we started our investigations in 2005. Our goals were to address some of the more gaping holes in the Java ecosystem and bring it on par with the languages touted as more productive. The first effort was to design a better web framework, called "Aranea". At that point of time Java had more than thirty actively developed web frameworks, and many of them were used simultaneously in the same projects. We decided to focus on two key issues: ease of reuse and framework interoperability.

To solve the first issue we created a self-contained component model that allowed the construction of both simple and sophisticated systems using a simple object protocol and hierarchical aggregation in style of the Composite design pattern. This allowed one to capture every aspect of reuse in a dedicated component, be it a part of framework functionality, a repeating UI component or a whole UI process backed by complex logic. Those could be mixed and matched almost indiscriminately subject to rules expressed in the interfaces they implemented.

To solve the second issue we proposed adapters between the component model and the various models of other frameworks. We later implemented some of those adapters both in a local and remote fashion, allowing one to almost effortlessly capture and mix different web application components together, no matter what the underlying implementation may be.

The next issue that we focused on was the data access layer. At that point in the Java community the most popular ways of accessing data was either using embedded SQL strings or an Object-Relational Mapping tool ''Hibernate''. Both approaches had severe disadvantages. Using embedded SQL strings exposed the developers to typographical errors, lack of abstraction, very late validation and dangers of dynamic string concatenation. Using Hibernate/ORM introduced a layer of abstraction notorious for the level of misunderstanding and production performance issues it caused.

We believed that SQL is the right way to access the data in a relational database, as it expresses exactly the data that is needed without much overhead. Instead of embedding it into strings, we decided to embed it using the constructs of the Java language, thus creating an embedded DSL. As one of the goals was to provide extensive compiler-time validation, we made extensive use of Java Generics and code generation to provide maximum possible static safety. We also built some basic SQL extensions into the language that provided a better interface between Java structures and relational queries as well as allowing effortless further extension and enabling ease of abstraction.

Our work on the SQL DSL made us believe that building type safe embedded DSLs could be of great use for the Java community. We embarked on building two more experimental DSLs, one for generating and manipulating Java classes on-the-fly and the other for parsing and generating XML. These experiments exposed some common patterns, including restricting DSL syntax, collecting type safe history and using type safe metadata. Applying those patterns to different domains helps encode a truly type safe DSL in the Java language.

Our final and largest effort concentrated on a major disadvantage of the Java platform as compared to the dynamically-typed language platforms. Namely, while in PHP or Ruby on Rails one could edit any line of code and see the result immediately, the Java application servers would force one to do "build" and "deploy", which for larger applications could take minutes and even tens of minutes.

Initial investigation revealed that the claims of fast code reloading were not quite solid across the board. Dynamically-typed languages would typically destroy state and recreate the application, just like the Java application servers. The crucial difference was that they did it quickly and the productivity of development was a large concern for language and framework designers.

However as we investigated the issue deeper on the Java side, we came up with a novel and practical way of reloading code on the JVM, which we developed and released as the product "JRebel". We made use of the fact that Java bytecode is a very high level encoding of the Java language, which is easy to modify during load time. This allowed us to insert a layer of indirection between the call sites, methods and method bodies which was versatile enough to manage multiple versions of code and redirect the calls to the latest version during runtime.

There have been over the years some basic developments in the similar fashion, but unlike them we engineered JRebel to run on the stock JVM and to have no visible impact on application functional or non-functional behaviour. The latter was the hardest, as the layer of indirection both introduces numerous compatibility problems and adds performance overhead. To overcome those limitations we had to integrate deeply on many levels of the JVM and to use comp

Organizer: 
Location: 
Liivi Street 2, room 404
Event category: