Why did you choose it?
Did it affect your productivity?
Does your clients care?
I do the vast majority of my side project work in Java, typically as traditional web applications, web applications integrating Vue, or, more recently, Java backend for APIs and vue.js exclusively on the front-end. I generally avoid Java frameworks (I'm looking at you, Spring) when practical.
By using this approach, I find that I can develop apps very quickly.
I think that much of the relative hate for Java comes from the experience of developers who only know the "enterprisey" way to write Java apps which provides, frankly, a horrible experience for maintenance and debugging.
One of the nice things about Java is that my clients know that code I write for them will be maintainable for years to come, even if I'm not around.
So if you're not using a framework you're like writing pure java? Sorry if it sounds dumb, but I really don't know much about java's ecosystem
By avoiding frameworks, I mean that I typically avoid using tools like spring/hibernate/struts/etc. These are roughly equivalent to tools like cake/symfony/laravel in the PHP universe. This isn't a hard-and-fast rule, however, but rather a general approach that gets examined new for each project I start.
Many of the frameworks make it faster to ramp-up projects and to onboard new developers to projects. These are very good things. They also impose a specific way of doing things that may or may not correspond to how I want to proceed. I'll use these tools when it's to my advantage and will avoid them when I don't think that they'll be helpful or fun to work with.
For the front-end, however, it's a different story- I enjoy working with bootstrap/jQuery and am completely taken with Vue.js. (All of my new projects have been Vue-based)
cool, but are you using any java web framework?
Spring/Struts/Vert.x/Vaadin/etc? Not usually, no. The Jersey web services framework is probably the closest to a framework that I regularly use. More often than not, my projects tend to be build from plain servlets or Jersey web services, using JDBC to connect to a database, with plain HTML or JSPs with Vue.js as front-end components.
I've been working with Java + Spring Boot applications for the last few months (client work) and I would say my productivity has been negatively impacted by the slow edit-compile-run cycle. Things have improved since the last time I did anything with Java, but given the choice I would still go for Python+flask or similar stacks (node/express etc).
That said, if you're familiar with and comfortable with that sort of setup, then I don't see why using it would be a problem.
These choices just don't matter all that much for the vast majority of applications.
thanks for your input!
I use C# (.NET Core) because it is what I use in my day job. I love C# and the MS ecosystem. Personally, I'm significantly more productive in C# than other languages, but it's almost certainly due to familiarity rather than something inherent in the language.
so you're always on windows? do you use azure? how's the dx like on windows 10? thanks.
Yes, Windows 95% of the time (a tiny bit of Linux at work). In my opinion the developer experience is great. But again, I'm very familiar with Windows so there may be pain points I've just been conditioned to ignore.
Well, it depends what you mean with "hacking your stuff"? Does Android count? If yes, then I do that daily working on my Android apps with Java....
yes, it definitely counts :) have you tried kotlin yet?
Not seriously yet. Only been playing around with it. Might try it out with next project, learning "just-in-time" while developing.
Java can be fun and productive when using lightweight frameworks.
I'm about to release my side project were using vue+java(pebbletemplates+rapidoid+jdbc)+postgresql everything behind haproxy.
Works fast and my productivity is better than php/nodejs especially when codebase grows (well I'm doing java for +15 years...)
thanks! is there any other framework you would recommend? rapidoid last commit was more than one month ago. do you feel it's dated? I'm looking for learning Java :)
I'm using unreleased head version with some little tweaks added during the work - 'hacking' fits perfectly here.
For learning I would suggest something more popular (with better documentation/stack overflow).
Hacking my project in Scala/Playframework. Initially want to learn Scala, now Scala become one of my programming language. However, I never used Scala in my professional work as employee.
Having done a spot of consulting between Software Engineering jobs - most clients do not care which language you use, only how much you bill them for the value you are delivering (exception being technical clients, who want to maintain the solution after you build it).
To that end, I'd recommend using something like Ruby on Rails/Python+Django or Elixir+Phoenix if you're building an MVP.