I have been defeated, java sucks
it's not that java itself is terrible, it's what happens to it, when placed inside a corporate env. it gets hacked together, becomes old and outdated, and it makes you hate doing what you love to do. that's what sucks about java. now where do i go? I'm over 50. I've been to the zoo to see the animals.
Started with Fortran, seen different technolgies come and go, until recently I liked what I did. Speaking with about 1 year of java, now I know how 9 women can produce a baby in one month. Now I know how a herd of turtles (galapagos tortoise variety) can cross the desert. The first Fortran compiler was released around 1954. I started 20 years later. Java is proof positive that we have accomplished very little in the way of compiler development in 55 years. Sure, lots of clever languages have been created, but none have made it to the mainstream. Must be the clever marketing. Java has the least semantic density (lines of code to accomplish a given task) of any of the mainstream langauges - more time is spent navigating with some of the incredibly good tools. If Java is the only language you know, do yourself a favour and learn something else. Not C#, but Perl, Haskell, J, anything. Have a basis for comparison. I'm going back to fixing bicycles. figure out what you'd rather be doing, and work towards that. but, you should probably be doing this at all times, anyway. once you saw you fell out of love with java, figure out what you want to aim for next. I think I know what you mean. In corporate environments sometimes the "architects" overdesign their solutions and it is no fun. However, is not really Java. Java can be fun as I rediscovered recently working with GWT. But I had the luxury to make an architecture light enough for my taste. Me too. I find that a quite cool language is hidden in Java. It is just that everyone is trying their best to make programs as annoying and soul sucking as possible with it. Unit testing and a dependency-injection framework like google guice or similar makes java much more fun. 1. Java itself is terrible. It doesn't have lambdas. Enough said. 2. Everything gets hacked together and becomes old and outdated. The presence or absence of anonymous functions is the deciding factor in terribleness now? I guess that makes PHP non-terrible, right? (and yes, I'm being sarcastic) The presence is meaningless; the absence is a deciding factor in terribleness. ---1. Java itself is terrible. It doesn't have lambdas. Enough said. technically yes but it can be simulated with interfaces and in line declared classes that implement said interface and then have calling reference to the current classes delegate method. I used to scream and yell about this until someone pointed out that I could accomplish the same result this way. I will be the first to day that it is not pretty but you can accomplish the same result. The result I'm looking for is clean, intuitive code. The Java hack for lambdas does not accomplish that at all. Just pointing out that technically it can be done, your statement about not having it could mislead someone. I am not arguing the merits of whether or not it is the most optimal solution or not. Just pointing out that it can be done. I studied Java at College. I knew C, Pascal and some C++. I remember VERY CLEARLY hating it. But it was long ago, and I had long forgotten why, so I recently (like 2 weeks ago) decided to give Java another try. And I remember now why. When you have fscanf, or cin, doing a new BufferedReader(new InputStreamReader()) just to read a key from console seems pretty stupid. I know Java has System.In.Read, but why doesn't it have System.In.Readln? (forgive me if it does, but the course I took specifically said it doesn't) Also, why the redundante names for enum constants?
What was the guy thinking when he designed swing? A method that returns you a MessageBox object instead of simply a MessageBox class? I'm sorry about the rant, but Java style feel ackward after coding for a couple years in C#. You must realize that in a corporate env. (where software is not the core product), you are simply a maintainer of highly convoluted systems. You aren't a maker anymore, even though you occasionally create code. If you can embrace this, as I have recently, it will save your life. I wonder if there is any language that a corporate environment could not make to suck. Java was ruined for me in college. I hated it. I then decided to conquer my hatred of it when I started my first job. I had the help of an interesting project wherein I had LOTS of freedom to learn and make stuff in a lab without the fetters of enterprise requirements... I began to love it. Fast forward 2 years and I've changed jobs. I feel like I can hack my way out of any nasty problem. Java is more unweildy in this enterprise environment because we are leveraging several enterprisey frameworks, but we can make bigger strides. The framework is doing a lot for us. I am still making stuff. This job is a pressure-cooker, but I'm feeling very fulfilled and I'm advancing. Fast forward 2 years and I've quit the pressure cooker to be a Rails contractor (actually, easier), I've even got a startup going. Ruby is powerful, and I tell everyone they should be using RoR instead of Java. I laugh at people who don't understand what they're missing. Fast forward 2 years and I am back in a corporation. Using Java very sparingly to maintain lots of integrated systems. The problems are nasty, there is no feeling of 'making' anything. I resign myself to being the best maintainer I can be. I keep my sanity with side projects. It's easiest to use Python on App Engine, because I don't have to be a sys admin. The more interesting problems you are solving the better the language you are using seems to be. I would even go so far as to say that if you find someone who loves a particular language, it's because they are using it to solve interesting problems. I think you are on to something. Maybe the ability to code with flow is also a major factor to liking a language and the task it is used for. To sit in an uninterrupted "Aha! I fix!"-loop with the feeling that there is progress and one get kick out of it continuously. When doing maintenance on patchy code, working with a flub-language, or having a edit-compile-debug cycle that is annoying, one is more likely to be in a "Uh! Wtf!"-loop. Now... how can one turn these theories around to something useful that one can apply to our day-maintenance-programming-job to make them fun and tolerably? Because they do pay well, and there is typically much to learn. Oh man. You're hitting human stupidity. Not easy to escape that. I used to be an OpenVMS sysadmin. Now I administer enterprise middleware -- ESBs. Just like getting booted from Eden. That convolution situation holds about all programming languages in corporate environments. This situation is even worse in Java though, because it lacks good tool support (yes sure eclipse rocks...) and it is overwhelmed by millions of libraries that do the same thing (but none of them does what you want:D). So I've only looked in passing at Scala, but I've certainly heard first-hand from several people who are forced to code Java on a daily basis that they have managed to use Scala for bits of their system. They all claim that their lives got better. Might be worth looking into. Spring framework still keeps me addicted to java. It's excellent. SCALA, SCALA and then SCALA. JRuby. :) <<dons gasoline boots and flamesuit>> Why the flame protection? I hear JRuby is pretty nice. It is. But there are a lot of Ruby haters around, it seems. For desktop try Qt, C#
For web try Python, RoR I never heard of Qt. What's good about it? Qt is a really nice cross-platform gui lib, some consider it to be one of the best examples of how to write an API. Its written in C++, but has bindings for other languages. It is very mature and robust, has lots of nice tools, and recently was purchased by Nokia, who actively support development. It is also the platform on which KDE is built. I've played around with it, the developers seem like very capable people, and the capabilities of the library seem top-notch, but I haven't done any non-web development for a while so I haven't had a chance to really exercise it and see how I like the workflow. Lisp!