Welcome to Education Centre

From Education Centre
Jump to: navigation, search

We take pride in developing and deploying high quality systems for our many customers. We offer deep-end technical support down to the code level for customers who intended to bring in support in-house as an alternative to our managed services and post launch service level agreements. The purpose of this site is to serve as a guide as to educate like minded technical Java developers of the full stack of highly recommend industry standard solutions to common problems.


Getting started

This guide assumes Java programming knowledge and that technical staff have a development environment to hand. Our preferred stack of the month are the following, as of February 2015:


Web App Technical Architecture and Supporting Technologies

Developing scalable and maintainable systems is an art form that requires integration of several technologies that offer efficiency and enhanced features beyond the scope of the Java programming language. Java is the defacto standard programming language for heavy duty and commercial systems that offer enterprise level features for small to large scale system applications. With the advent of polyglot programming Java integrates well with other leading technologies which are dedicated to offer a specific and very specialised functionality. Our Education centre explores all the current technologies typically a full stack Java developer will use in many commercial applications. It will aim to provide references to the most useful, up to date component libraries, code samples, first hand problem/solutions and references to tutorials.

  • Single Page Web Apps - Based on form-intensive comprising of a set of stateless reusable REST services, and from an MVC perspective to take the controller out of the backend and move it into the browser.

JAVA

This is the core development programming language with the latest version as of February 2015 being Java Version 8 (Java SE 8u31).

  • The Java Standard Edition (Java SE) SDK is available from http://www.oracle.com/technetwork/java/javase/downloads/index.html Java Platform, Standard Edition . This is sufficient for Java core programming and for most web application development project. It is common to introduce dependencies with other dedicated libraries like Spring MVC, Hibernate, JPA, Play etc and Continous Integration (CI) (Jenkins, Bamboo, Teamcity) and build tools (Maven, Gradle) to extend Java core functionality and bundled together into a single deployable archive (WAR, JAR, EAR). We will explore these in great detail later on.
  • The Java Enterprise Edition (Java EE) is a heavy weight fully loaded edition which goes beyond the remit of Java SE to provide enterprise level features such as security, EJB's support, high volume transactional, high integrity and super scalability application support. Java EE is not as frequently used these days except for legacy systems and EJB's technology is not as popular as it used to be due to the cumbersome configuration and heavy overhead components which otherwise could be achieved far more efficiently through mix and match of technologies from other vendors like Spring and Hibernate.

These are the list of common supporting Java technology library that go hand in hand in build a sustainable technical architecture within the Java SE eco-system.

  • JDOM - Supports Document Object Model (DOM) creating and processing of XML documents.
  • Spring Framework - Supports dependency injection, inversion of control to build simple, portable, fast and flexible applications.
  • Hibernate ORM - Object Relational Mapping for building data access layers to databases.
  • Play Framework - A lightweight, stateless, web-friendly architecture using Java and Scale.


Python

This is a quick scripting language to automate repeatable tasks. It can be extended using popular open source libraries to cover complex computational tasks to building full blown web sites.

  • Python 3 runtime libraries are available to download from Python 3 . Recent stable library in development over 5 years (updated 2015) with standard library improvements. Recent Ubunutu and Linux environments includes Python 3 as well as Python 2 for backward compatibility. Major packages have been ported to Python 3 such as numpy (for number crunching), Django, Flask, CherryPy and Pyramid (for Web sites), PIL (an image processing module) was superseded by its fork Pillow, cx_Freeze (for packaging applications with their dependencies), py2exe (for packaging your application for Windows users).
  • Python 2 runtime libraries are available to download from Python 2 . The final 2.x version 2.7 release came out in mid-2010. No more releases after this. New programmers may want to consider teaching Python 3 first and then introducing the differences in Python 2 afterwards (if necessary), since Python 3 eliminates many quirks that can unnecessarily trip up beginning programmers trying to learn Python 2.


Databases

Database technology has evolved since relational database methodology based on referential itegrity where primary and foreign key links normalised database schemas together. NoSQL database are common and high flexible at storing data in the form of list containing key - value pairs in a collection.

Front-end UX

User interface components and client-side scripting allow developers to produce loosely coupled architectures with great cross browser compatibility and device responsive content that will render within IOS and Android mobile and tablet devices.

Continuous Integration and Build tools

Continuous integration of developers in team's code and packaging, test task execution and automating process from source control.

Security and Single Sign On (SSO)

User management and secure authentication with encrypted tokens and RSA public key and private key authentication.

XML

JSON

UNIX