krail
Krail provides a framework for rapid Java web development by combining Vaadin, Guice, Apache Shiro, Apache Commons Configuration and others. For more information, see the comprehensive Tutorial, which also makes a reasonable demo. (You can clone directly from the Tutorial repo)
Notice
Version 0.10.0.0 has just been released - this was a major refactoring. See Release Notes.md.
Development of Krail has been lacking for a good few months - but it has now reached the top of the TODO list again.
It is currently undergoing a major refactoring, to split out some of the major parts from the core (the core being Vaadin, Shiro and Guice). I18N, Option, Services are being factored out into their own projects, as they could actually be used outside of Krail.
Work will then continue on other aspects. This is the current plan:
- Complete the refactoring - released 23rd Aug 2017 (0.10.0.0)
- Update to latest Vaadin 7 - released 23rd Aug 2017 (0.10.0.0)
- Upgrade to Vaadin 8 - It is hoped that this can be completed by around mid September 2017
- Attempt a migration to Eclipse Vert.x - that may or may not work!
This core library provides:
- Site navigation, using a sitemap configured by annotation or Guice
- Authentication / Authorisation framework, including page access control
- Vaadin Server Push (with option to disable it)
- Event Bus
- Extensive I18N support
- User options
- Application configuration through ini files, database etc
- JSR 303 Validation (integrated with I18N)
- User notifications
Additional libraries, integrated and configured through Guice, provide:
- JPA persistence - krail-jpa, using Apache Onami persist and EclipseLink
- Quartz scheduler - krail-quartz, using, of course, Quartz Scheduler
The issues tracker, blog and Tutorial provide more information.
Download
Gradle
repositories {
jcenter()
}
'uk.q3c.krail:krail:0.10.0.0'
Maven
<repository>
<id>jcenter</id>
<url>http://jcenter.bintray.com</url>
</repository>
<dependency>
<groupId>uk.q3c.krail</groupId>
<artifactId>krail</artifactId>
<version>0.10.0.0</version>
</dependency>
Direct
Limitations
Would not work in a clustered environment
Status
23rd Aug 2017:
- Vaadin 7.7.10 is integrated with:
- Guice 4.1.0
- Shiro 1.4.0,
- MBassador (Event Bus)
- Apache Commons Configuration
- Guava cache
Krail is usable, though there is still work to ensure thread safety. No major changes to the API expected. Vaadin push is supported. Tested on Tomcat 7 & 8
testApp
There is a functional test application which can also be used to explore functionality - though the Tutorial may be better for that
Project Build
Gradle is used (made a lot easier thanks to the Gradle Vaadin plugin.
Acknowledgements
Thanks to:
Dirk Lietz for his review and feedback for the Tutorial
Mike Pilone for his blog post on Vaadin Shiro integration
ej technologies for an open source licence of JProfiler
Vaadin
Guice
Apache Shiro
JUnit
Guava (cache and utilities)
MBassador Event Bus
Flag Icons
Apache Commons Configuration
Gradle
Gradle Vaadin plugin
Gradle Docker Plugin
Gradle Bintray Plugin
Bintray
Docker
Logback
slf4j
AssertJ
Mycila
Mockito
spock
FindBugs