Custom Java development to fit your needs
Why choose Java
We believe that there is no need to introduce the Java programming language. It is one of the most widely used programming languages in the world. According to the Tiobe index, Java is the most popular programming language. The development of Java is governed using the Java Community process, a formalised mechanism for developing standard technical specifications for Java technologies.
So, why is it beneficial to use Java in your software:
- Secure - it is possible to only allow untrusted code to run in a sandbox environment, or to manage various levels of privileges using the security manager.
- Robust - automatic memory management using the so called garbage collector and strong typing prevent the creation of unstable code.
- Performant - initial Java version took it's toll on performance for running on a virtual machine. That is no longer the case, Java performance keeps improving with each new version.
- Distributed - different parts of the systems can run in parallel on different machines at the same time.
- Portable - the application is compiled in a hardware agnostic way - „build once, run everywhere“.
Java Enterprise applications
Java Platform, Enterprise Edition (Java EE) is a platform specification for development of enterprise software, based on the standard edition of Java. It includes elements specific to enterprise applications, for example:
- Multilayered architecture - the standard for enterprise applications. Typically you'll find three-layered applications or the model-view-controller split.
- Web-service support - the client and the server communicate using the HTTP protocol. It is possible to present various interfaces of services as REST, SOAP etc.
- Object relational mapping (ORM) - a bridge between Java objects and a model stored in a relational database.
- EJB and JMS - Enterprise JavaBeans and Java messaging. Technology for communication between remote or local systems.
We have many years of experience in Java Enterprise application development and customers, which have outsourced their developments to us for more than 5 years or more. Our applications come with documentation, clean code and unified style. This allows us to reduce the cost of maintenance and further development for out clients. In the area of Java development, we mostly focus on system and service integration, development of Mule ESB and other enterprise identity and access management systems such as Keycloak single sign-on.
Java sustaining & testing
Code maintenance (sustaining) and testing requires a different approach and skill-set than development of new applications. These areas are quite familiar to us and we already took over multiple projects for our customers. We maintain, fix and further develop these applications – we are able to dive deep into these applications and transform them to make further development easier and maintenance cheaper.
Sustaining and testing of projects which our team participated on from the beginning is much easier, because we anticipate future development of the project. We use the following professional tools and applications to help us do that:
- JUnit, TestNG, REST Assured and others - automatic testing of applications, APIs and source code.
- EasyMock, PowerMock and others - test support tooling - data and result mocking
- Jenkins CI - tool for continuous integration (helps us build application versions containing new fixes).
- Vagrant and Docker - allows us to launch complete infrastructure (e.g. a copy of the customer environment) for automatic testing.
We develop projects (or their parts) using a set of microservices for many of our customers. These microservices can be easily combined to achieve very complex functionality with minimal cost of maintenance and development. Further expansion of such project is then very quick and flexible, thanks to the separation between these microservices. You can simply add another service to a fully functional chain of services. In addition, microservices can be integrated with enterprise applications such as Mule ESB. The advantages of microservices are clear:
- Scalability - it is quite easy to scale the entire microservice system (or it's part) when the need arises.
- Easy development and maintenance - each service is a small piece of code and the developers can quickly and easily understand it. This allows them to work more efficiently than on a monolithic application.
- The ability to switch technologies - separation of services allows you to easily switch technologies as needed, giving the customer lots of freedom.
- Isolation of errors - failure of a single service won't significantly affect a larger application.
IoT and wearables
We've worked on IoT and wearables projects for several years now. We help our customers collect data (and to send data and commands) directly from (or to) hardware devices – be it GPS modules in cars, wireless sensors or hardware for daily carry, i.e. wearables. We transform the data from individual network packets all the way to systems for storage and analysis of data Big Data or data grids. Most of our IoT or wearables projects are based on microservices, able to process tremendous amounts of data (thanks to simple scaling), which flow both ways – between servers and hardware devices.
Don't hesitate to contact us if you have a project in this area. We are not afraid of hardware...
We offer transparent approach to outsourcing, to minimize the risk not only in the beginning, but also throughout the project:
- 40 hour TRIAL - try working with us, risk free.
- Incremental growth - you can start small and together we can slowly build the whole team around your project (our teams are often hybrid, people from your organization and from our company in a single team).
- Source code - the customer is always the owner of the source code. We don't lock our customers in.
- Documentation and code style - our team always provides documentation of our applications and APIs. We also maintain code comments using the JavaDoc standard and a unified code style. You will have no trouble taking over the code with your internal team.
- Openness - we are able to store the source code on our site, while giving you 24 hour a day access to it. We have nothing to hide. You will also be able to download the source code at any time. We will also provide you with access to Jenkins and other parts of our infrastructure, used for your project. We can also use your infrastructure, including source code repositories if you prefer that.
- Together towards success - we want to be a part of your team, to be in close contact and to participate on a successful project together. That is the best way to remain real, long-term partners.
- Why us - our company values and the reasons why engage with us are not just talk. This is simply the way we work, and we are glad that our customers see and appreciate these values.