How do I master complicated JEE concepts

"Talk is cheap, show me the code" - Linus Torvalds

Java

Java skills

  • Java SE 8
  • Eclipse
  • Ant, Maven, Gradle
  • swing
  • JUnit, Spock, Arquillian
  • JEE 7
  • JSF, EJB, JMS, JPA
  • Web services SOAP, REST
  • Groovy, Spring
  • JBoss and WildFly

I have been working with Java for over 15 years, with my main focus being on Java technologies for enterprise applications. This includes the entire spectrum of Java EE from JPA, JMS and EJB to JSF and web services with SOAP and RESTful.

I also like to use scripting with Groovy, Spring and Build Management with Gradle or Maven in projects. I am also up to date with Java SE 8 and Java EE 7.

I have also mastered the relevant tools such as JUnit, Spock, Arquillian and Jenkins for the important topics of test automation and continuous integration.

My reference projects on github:

  • jtrack-ee7 - RESTful web services, Gradle, test automation with Spock, JUnit and Arquillian
  • wildfly-git-install - Manage WildFly installations with Git

Web / HTML

The web front end is the flagship of every application and has a professional look and feel that shapes user acceptance. For this reason, it is always worth planning in enough resources for this area. Now, with the increasing spread of HTML5, CSS3 and the steadily decreasing share of Internet Explorer 6, web development is much more fun again. The standards are adhered to and you no longer have to build and test a special solution for every browser or device.

Web skills

  • HTML 5
  • CSS 3
  • JavaScript
  • RESTful web services
  • JSON
  • Apache
  • Content management systems
  • Homepages

SQL

SQL skills

  • Scheme design
  • Advanced queries
  • Window functions
  • optimization
  • PostgreSQL
  • MySQL
  • Oracle

I've been working with SQL since the late 1990s, mainly in the context of the persistence layer of Java Enterprise (JEE) applications. Topics such as schema normalization, phonetic search and concepts for avoiding duplicate data storage were added early on. Since 2008 I have also worked on strategies for analyzing and debugging massively parallel database accesses via JDBC as well as OLAP-like queries in real time using tables with over 90 million rows.

My reference project autotable on github automatically creates an SQL table from a CSV file.

Git

After many years of using CVS, for which I have always been in charge of the respective company since 2001, I switched to Git at the end of 2013. Git has taken source code management to the next level and I am enthusiastic about the new possibilities of distributed working method and the idea of ​​the "Content-Addressable-File-System". If branching, and especially merging, was always quite complicated with CVS and was therefore often avoided, this topic is part of daily work at Git. The built-in access via SSH and HTTP makes the repositories quickly available on request, even for occasional "pulls" from colleague to colleague.

Git skills

  • Central repository setup
  • Commandline
  • Eclipse UI
  • Workflows

python

Python skills

  • Python 2.7 and 3.3
  • ipython
  • Admin scripts
  • DB API
  • cron jobs

Python is characterized by a clear, easily readable syntax. Nevertheless, through consistent object orientation, Python offers the possibility of solving complex tasks in an elegant way. In contrast to Perl, Python already has everything important for day-to-day work on board with its extensive standard library, from email and networking to the web server.

Therefore, Python is the first choice for me when a problem can no longer be solved with a three-line bash.

C ++

I have been working with C ++ since 1993 and it is the programming language with which I learned object orientation, based on the second edition of Bjarne Stroustrup's book "The C ++ Programming Language". This book has had a lasting impact on my claim to what constitutes good code and good design and what elegant solutions should look like. In the first project under my leadership, we were one of the first companies in Germany to program C ++ with exceptions and templates under Solaris as early as 1995. The success of Java has pushed C ++ a bit into the background, but the new standard C ++ 11 makes the language interesting again.

C ++ skills

  • Advanced inheritance
  • Networking, sockets
  • Database access
  • Templates and Exceptions

Tools

  • Email server Exim and Dovecot, including encryption and migration and routing concepts
  • TCP / IP traffic analysis with Wireshark and tcpdump
  • Firewall iptables: configuration, debugging and backups
  • Wiki
  • Bugzilla / Jira
  • LibreOffice
  • SELinux
  • Linux KVM: Configuration of highly available virtualization with KVM, DRBD and LVS
  • Management of SSL certificates with OpenSSL for Apache and Java-Keytool for JBoss, Tomcat