-
Notifications
You must be signed in to change notification settings - Fork 11
Home
jeremychone edited this page Jan 29, 2015
·
4 revisions
ProjectMVC is a end-to-end sample cloud application developed to illustrate BriteSnow's best practices for high-velocity development for cloud and mobile application.
- Keep It Simple: The first mantra of the BriteSnow's approach is to keep things as simple as possible. Thourough a project development complexity should be well understood and tightly controlled, and developers should be responsible to design their code to avoid code explosion at all price.
- Simple over Easy: The BriteSnow's technical approach promotes simplicity over easyness and do not focus on what you can acheive in the first hour, but how efficient a team can be at developing a high-quality fully application is the shortest amount of time possible. In other word, it is ok for the developers to learn a little bit more things at the beginning to get started on the right track, rather than showing of what he or she managed to do in couple of hours with the latest all-in-one framework of the day.
- Best of breed libraries over all-in-one frameworks: This is a consequence of 1) and 2), and the BriteSnow approach really focuses on staying close to the environment (e.g., Java 8 on the server, and HTML5 on the client) and choosing libraries that are not invasive and focused on solving one or two problem very well (e.g., Google Guice in Java, or jQuery/Handlebars/Bootstrap) rather than the all-in-one framework that try to solve all problem know to devevelopers (e.g., Spring/JEE on the server, Angular.js/Ember.js/Sencha on the client)
- Code discipline: While it might be tempting to believe that tools or frameworks could take most of the not so fun discipline workload away from us, the truth is that no matter the tool or technology you use, the difference between a good and an average developer is discipline.
- Know your stuff: And last but not least, one of the most important aspect of programming for developer, is to know your stuff. If you code server Java, you need to know and learn Java, concurrency programming, HTTP, and if you do HTML5 on the client, you need to know the DOM, JavaScript, CSS, and HTML. Do NOT rely on a framework to completely abstract yourself from the environment on which you are writting on.
-
Server
- Java 8: The JVM is the most reliable, scalable, virtual machine for high concurrency programing, and while every couple of year, the industry likes to come with a new language/runtime that should change it all, big company that need to scale often end-up writing their high availability code in Java (or some languages running on the JVM). With Java 8, Oracle, finally brought some of the functional programming
- Google Guice: Dependency Injection is very important, and while Spring was the founding father of Java DI, Google Guice has redefined it with a very high-quality focused library that just do dependency injection with Java Annotation (removing the need for XML) and without all the baggage Spring technology and methodology have.
- Snow.java: Snow.java is a Google Guice based Web Binding library that provides an extremely extensible way to build Web REST end points as well as a simple and extensible MVC to build server based page rendering (i.e. when SEO is needed).
- JOOQ, J8QL, Jackson, Metrics, Lucene, ...: Being based on Google Guice allows the application to use any popular Java library available for the application.
-
Web Client
- HTML 5: Core runtime (responsive & hightly interactive front-end)
- jQuery (core): DOM Manipulation API
- Handlebars: Client side templating engine
- Bootstrap: Reusable HTML ui elements
- brite.js: jQuery and DOM based minimalistic MVC
- moments.js, easle.js, d3.js, ...: Any other best of breed javascript library relevant to the application