Size and complexity of own software solutions in small and medium-sized enterprises (SMBs) can increase rapidly. After a start-up phase with a good product idea and its immediate and active implementation into software, necessary consolidation works more often than not fall by the wayside. There are several different reasons that contribute to the fact that small development teams reach their limits after some months or years regarding the complexity, extendability, or maintainability of the software product. Such reasons could be e.g.:

  • underestimation of fundamental design decisions at the beginning of the project
  • time pressure (which was justified at that time)
  • lack of expertise
  • etc.

But also during normal, healthy growth does a software’s complexity increase inevitably, e.g. by:

  • new requirements regarding deployment
  • growing number of included libraries or tools
  • changing hardware or software requirements (e.g., multi-core processors, new Java versions)
  • etc.

SimplexaCode’s services professionally support you and your development team in work consisting of all those tedious but often necessary tasks. They contain among other things:

  • Refactoring

    The Java programming language is already 23 years old. Without any doubt, it has proven itself during that time. However, this must not hide the fact that both software development as well as Java itself have evolved significantly. Several classes and even packages are considered deprecated today and have been replaced by new ones, more often than not with a complete paradigm change. Officially, Java keeps its compatibility down to version 1.0. However, corresponding legacy code always places a burden on and significantly prevents consistent software modernization and enhancements.

    SimplexaCode supports you in identifying old, no longer up-to-date Java classes or development paradigms and adapting them to become state-of-the-art.

  • Build Processes

    With a growing number of classes, packages, libraries, development tools, etc. comes an exorbitant increase in configuration complexity. More often than not is the project file of the integrated development environment (IDE) regarded as a “closed book” that gets “carried over” by the development team from IDE version to IDE version, that has grown over the years, and that “simply” works—but no one knows why and for how long. Newly introduced development tools—often on spontaneous occasions or because of an emergency—reinforce the problems regarding complexity, inconsistency, and handling.

    SimplexaCode follows a radically different approach: It is not relevant that build processes work like a “black box”, but that there is a significant reduction in different development tools, a simplification and automation of the whole process, and a clear reproducibility by means of documented steps. In general, it must be possible to set up each and every step of a build process from scratch without being dependent on secret internal matters of a project file.

  • Deployment

    Despite all of Java’s advantages—above all being platform indepentent—, a Java developer today can no longer assume that all end users have a Java runtime environment (JRE) installed on their machines. Its installation is not obvious to laymen, and several security issues, esp. when it comes to applets, have damaged Java’s reputation for some end customers. Furthermore, Java bytecode can be decompiled, such that your intellectual property, your know-how, and the functionality of your applications is open to others.

    SimplexaCode supports you regarding the important steps of deployment and helps you obfuscate, protect, and sign your source code. SimplexaCode uses the professional tools install4j and Excelsior JET in order to create user-friendly installation wizards for your applications for Windows, Mac, and Linux. They either ship their own Java runtime environment (JRE)—virtually invisible for the end user—together with the installation program, or your whole application will directly get compiled to native machine code for the corresponding operating system.

  • Perfomance Optimization and Profiling

    Performance optimization, especially in Java, is a delicate subject. A rule of thumb says that programmers should refrain from (premature) optimization, because in general, it does more harm than good.

    SimplexaCode is aware of this problem. It again follows the paradigm that the best form of optimization is done by simplification: code that is written in a simple, plain, consistent, modern, and clear way. SimplexaCode has the necessary theoretical background knowledge in order to identify and eliminate typical and substantial bottlenecks in source code, e.g., whether the right, up-to-date Java libraries have been used and applied correctly, whether algorithmic principles have been taken care of, or whether common pitfalls have been recognized and avoided.

    SimplexaCode also works with the professional tool JProfiler in order to detect common hot spots in the source code and to find out if and how optimization could be applied or scalability could be guaranteed.

2018.07