- If IDE, then IntelliJ, for it offers a incomparable list keyboard short-cuts for your productivity that spoils your natural style of programming. I further customize it to automatically truncate line-ending whitespaces, do code-folding, etc. to suite my coding style.
- Developer-Readme.md is one of the often overlooked thing that I insist in for every single project repository with details on developer-setup instructions, project specific workflow instructions from pulling code to pushing committed code into managed code repository. Ensure it is self-explanatory for any new developer to jump-start work in no time. This is adopting Boy Scout Rule, from the word go.
- Maven or Gradle for dependency management. Upgrade yourself from Ant, if you are still using it.
- I have strong bias for JUnit5 for unit-testing over other options like TestNG etc. Complement it with Mockito for Mocks/Stubs/Spies to be used in your tests over its XUnit counterparts that are legacy. Good if you are using Hamcrest for assertions in your unit-tests, and you would do great if you are using AssertJ that has fluent APIs for your convenience and it does use Hamcrest internally, if that is your bias factor.
- Apache Lombok for reducing code verbosity using its magical annotations.
- OkHTTP3 is my preferred library for making HTTP or Websocket connections over the internet, whether you are coding for Android or server-side. The API is lean, fast and really simple to use. Not sure if there are even better contemporary libraries on this front.
- I still use Jackson for data-binding between DTO and JSON, mostly because of assumed familiarity. I do want to check out if there are better and nicer alternatives.
- SonarCube for code quality and static security analysis.
You can check out how all these tools are put to use from one of my open-source projects, DhanHQ-java.
Hope you got a think or two to learn from this and put at your work.