In this article, I would like to list down the tools and technologies generally used in Java world. Before going to tools and technologies, I would like to categorise the development models as below. But please note that, the list does not contain extensive items. May look biased but I listed down mostly used tools and technologies and development models.
- Web applications packaged wholly as a single deployable artifact and deployed in an application server.
- Micro services based web applications with HTML5/Angular Web UI or Mobile UI
- Mobile apps with hybrid frameworks or native technologies
- Desktop applications with Java Swing/Java FX
- Desktop application with HTML5 and electron framework
- Integration applications using Enterprise Service Bus and API Gateways.
Now before listing down the tools and technologies, I would give my definition for them.
Tools: The applications which are supporting the development, testing and maintenance of the software.
Technologies: The software (libraries/frameworks) which are used to develop a solution.
Below is the list of tools which are used in java development world.
1. Ant/Maven/Gradle :- To build the project artifacts
2. PMD, Checkstyle, Cobertura/Jacoco:- Source code quality and coverage Tools
3. Sonarsource:- Quality visualization and metrics (uses the above tools in point #2)
4. Jenkins:- Continous build and Integration
5. JIRA:- Requirements management and bug tracking
6. Confluence:- Documentation and wiki
7. Eclipse/IntelliJIdea/Netbeans:- IDEs
8. Jmeter/VisualVM/JProfiler/EclipseMAT:- Performance monitoring/profiling/testing tools.
9. Smartbear Collaborator: Code review
8. Git (Github/Bitbucket/Gitlabs)/SVN: Source code repository
9. HP Quality Center: Test Case management.
Below is the list of technologies mostly used in java development world.
1. Java 8 (Majorly deployed version as of now)
2. Spring MVC (For web applications and REST API)
3. Spring integration/Apache Camel (For enterprise integration based Enterprise Integration Patterns)
4. Spring security (For web application security/REST API security)
5. Spring data(For RDMS and supported NoSQL data)
6. JUnit/SpringTest/TestNG/Mockito/Powermock/EasyMock/RestAssured (Unit testing and mocking frameworks for Web and REST API testing)
7. Ehcache/Infinispan/Redis/Memcached (standard/distributed Caching )
8. WSO2 API manager/Mule API Gateway/ Apigee (REST API Gateway)
9. WSO2 ESB, Mule ESB other proprietary ESBs (Enterprise Integration)
10. Android/iOS: Native mobile development
11. Ionic/ReactNative/Cordova/Phonegap/Flutter: Hybrid mobile development
12. Hibernate/Java Persistence (DAO layer for RDBMS)
13. Postgresql/Mysql/Oracle/SQLServer/Anyother proprietary database
14. Python/R (Machine learning/deep learning)
15. Cassandra/MongoDB/Cloud Bigdata (Bigdata storage)
16. Hadoop/Apache Spark/ELK (Elastic search, Logstash, Kibana) stack for bigdata analysis