First, read this article: Java Doesn’t Suck – You’re Just Using it Wrong
Second, if you are lucky enough, try to lobby for using a modern Java stack. We are a couple of interesting technologies:
- DropWizard: a framework that glues a couple of interesting technologies, it's a nice starting point. Most of these technologies are mentioned next.
- Jetty: an HTTP web server.
- Jersey: a RESTful web service framework.
- Jackson: a JSON library. Similar to Json.NET.
- Logback and slf4j: a logging library and logging facade. Similar to log4net and CommonLogging.
- Apache HTTP Client: an HTTP client library.
- Joda Time: a library for correctly handling date/time values. Similar to Noda Time (actually, Noda started as a port of Joda).
- Gradle: a build automation tool. Similar to MSBuild. Gradle is able to to use Maven packages, which in turn are similar to NuGet packages.
- JUnit + JUnitParams: a unit testing framework and an extension that makes test case scenarios simple to use.
- Mockito: a mocking library. Similar to Moq.
- AssertJ: a fluent assertion library. Similar to FluentAssertions.
- WireMock: an HTTP mocking library.
- Swagger: if you develop REST APIs in .NET, you should already now it ;)
Finally, a good IDE is also important. The Eclipse IDE hasn't changed much over the years, and so I've been using IntelliJ IDEA, which is quite better (not surprising, since it's developed by JetBrains, the same people that developed ReSharper). There is a nice Community Edition, which is free. As a bonus, if you want to use the same short-cuts as ReSharper, you can get them here.