News for hackers. Stuff that matters.
Re:Choose Boring Technology (2015) by tarkin2 on Sunday June 07, 2020 @09:04AM (#23447036)
Yeah. Java is pretty boring but I wouldn’t recommend for the majority of cases.
Re:Choose Boring Technology (2015) by the_af on Sunday June 07, 2020 @09:38AM (#23447238)
Why not? Java is used to great success in the software industry. It's a good language and platform, fads to the contrary notwithstanding.
Re:Choose Boring Technology (2015) by pdimitar on Sunday June 07, 2020 @10:22AM (#23447526)
When you are actually coding Java -- yes. But as a sibling commenter pointed out, there's a lot of "XML as code" in the Java world. That's really hard to work with.
Re:Choose Boring Technology (2015) by the_af on Sunday June 07, 2020 @11:12AM (#23447926)
I haven't dealt with "a lot of XML" in Java for ages. I've been using it in my day job for a decade, and about the only XML I touch is pom.xml (that's the build file for Maven). This is like complaining about stuff in Java 1.4 -- sure, but we haven't been using it for ages.

Please don't take it the wrong way, but the days of XML for everything are long gone, and for years in Java it's been XML for nothing as a counter reaction.

Re:Choose Boring Technology (2015) by pdimitar on Sunday June 07, 2020 @11:30AM (#23448062)
Your experience doesn't nullify mine, and vice versa. There's a huge pile of legacy Java applications out there still needing maintenance and occasional new features.
Re:Choose Boring Technology (2015) by the_af on Sunday June 07, 2020 @12:25PM (#23448468)
You cannot judge a language and platform merely by legacy software. By that token, almost everything today is horribly broken, even trendier technologies like NodeJS or Go. You'd have to judge C by K&R standards, and C++ as the horrible preprocessor it initially was. It makes no sense!

You must judge Java by the developments of the last decade at the very least. Otherwise you're ignoring the practitioners.

Java hasn't used XML in ages and you cannot fault it for legacy apps. You could similarly complain about the horror of EJBs -- sure, but the industry has moved on and acknowledged they were a mistake.

Re:Choose Boring Technology (2015) by ByteJockey on Sunday June 07, 2020 @02:31PM (#23449461)
> You must judge Java by the developments of the last decade at the very least. Otherwise you're ignoring the practitioners.

I think plurality of situations it's actually used for currently would be a better standard than what you're advocating for.

This has the advantage that the merits people judge things on, and the experience they will most likely have using it will line up.

The downside is that, the merits used may differ a bit between markets or industries, but I'm personally ok with that.

Re:Choose Boring Technology (2015) by the_af on Sunday June 07, 2020 @04:15PM (#23450408)
The problem with judging a language by how it was a decade ago is that you're going to be left claiming absurd, outdated things. Imagine if I claimed I didn't like Java because it lacks generics, or because it lacks lambdas, or because I really, really dislike working with EJBs, or because working with Java means "working with a lot of XML" (this would flunk you in an interview, by the way).

Imagine if I complained about Linux and all I used as an argument was the Unix Haters Handbook.

Imagine if I complained about Windows and the most recent version I had used was Windows 95.

Re:Choose Boring Technology (2015) by ByteJockey on Monday June 08, 2020 @08:15PM (#23462262)
That depends on what you want from the judgement doesn't it?

If you want to be able to know the theoretical things you could do with the language, I think your definition is right.

If you want to know the most likely experience you would have using the language, I think mine is right.

I think it also depends on what circumstances you're using the language. Spinning up a new project probably lends itself more towards your definition. If you're looking to join an existing project, mine is probably more useful.

Re:Choose Boring Technology (2015) by pdimitar on Sunday June 07, 2020 @06:19PM (#23451435)
I am judging a technology by its amount of foot guns. That's why I am more fan of languages with only one way of doing things (and even that gets increasingly rare).

Java is a pretty solid tech and the JVM is one of the best runtimes in the world. But it does offer you infinite possibilities to write awful code and that made me less interested in it with time.

Re:Choose Boring Technology (2015) by the_af on Sunday June 07, 2020 @07:00PM (#23451825)
I don't disagree with you there are better languages which have learned from Java's mistakes, and I don't think I've argued it's the best one. Just that it's extremely successful, a good platform, and that programming in Java doesn't have anything to do with flinging XMLs like someone claimed.
Re:Choose Boring Technology (2015) by randombytes6869 on Sunday June 07, 2020 @05:40PM (#23451105)
That doesn't make Java a bad choice for building new things
Re:Choose Boring Technology (2015) by pdimitar on Sunday June 07, 2020 @06:16PM (#23451404)
Agreed, it doesn't at all.

I am saying that when I was contracting with Java some years ago it was a complete crapshoot: you could get an almost brand new project with a lot of thought put in that made it a pleasure to work on, or you could get an ancient EJB mastodon that made you want to slit your wrists.

And that gamble still exists if you want to contract with Java. A lot of preliminary negotiations have to be done in order not to find yourself in a situation where you should have charged $30k a month due to the insane amount of digging you have to do just to make the thing accept one new feature.

Re:Choose Boring Technology (2015) by the_af on Sunday June 07, 2020 @07:02PM (#23451847)
That gamble exists in one way or the other with any tech platform. I double dare you to take on a codebase written with NodeJS, Golang or Python without checking its sanity first. This isn't exclusive to Java.
Re:Choose Boring Technology (2015) by HelloNurse on Sunday June 07, 2020 @11:56AM (#23448251)
XML as code can (and often does) work as intended.

It's much less annoying than "exciting" episodes and habits:

  - let's see if our SSL certificate has been actually updated on all servers in the cluster
  - let's find out what I need to restart after deploying my web app update
  - who knows what the classpath loading order will be this time; if it's broken you can try a restart
  - finish the test quickly before the sysadmin committee begins an application server upgrade and everything goes offline for as long as it takes, hopefully only a few hours
Re:Choose Boring Technology (2015) by pdimitar on Sunday June 07, 2020 @06:21PM (#23451450)
Not sure how what you said fixes the points you enumerated? XML as code simply wraps other people's libraries in a different DSL and if they have bugs and/or operational complexity, no DSL on top of it will change that.
Re:Choose Boring Technology (2015) by randombytes6869 on Sunday June 07, 2020 @05:40PM (#23451103)
I haven't used XML in our Java apps in many years. Most of them don't contain a single XML file, unless they use Maven, then they have one.
Re:Choose Boring Technology (2015) by wpietri on Sunday June 07, 2020 @09:45AM (#23447277)
Java is boring in one sense, but it's the wrong kind of exciting in another. I've had to touch it a couple times in the last few years, and there's still a ton of "enterprise" nonsense in the space. Everything feels bloated, confused, unpolished. It's like I'm walking along, step on a trapdoor, and suddenly am sucked down into a tangle of stack traces, class loaders, annotations, and XML configs.

For me, part of "boring" is being like a 2x4 or a claw hammer: simple, solid, reliable, well understood. A lot of the Java world is nothing like that.

Re:Choose Boring Technology (2015) by matwood on Sunday June 07, 2020 @12:13PM (#23448371)
> For me, part of "boring" is being like a 2x4 or a claw hammer: simple, solid, reliable, well understood. A lot of the Java world is nothing like that.

TBH, this is exactly what the Java world is like. There are not many surprises in Java land. The language isn't getting fantasy land changes on a daily basis. There are libraries that haven't been updated in years because there hasn't been a need to update them - they just work. People want to leave Java because it's boring.

Is Java perfect? Of course not, no language is perfect. But, Java is the closest thing to a boring 2x4 the programming world has ever invented.

Re:Choose Boring Technology (2015) by wpietri on Sunday June 07, 2020 @01:32PM (#23448993)
Java the language is decently boring, (although I appreciate how Kotlin has tried to advance while staying pretty boring). But not Java the ecosystem. When I returned to using Spring a couple years back, I thought, "Well, it was rough then, but I'm sure they've worked out a lot of the kinks." Nope. It had become more complicated and less reliable. I know a lot of Java-land stuff seems fine to people who live in enterprise-land, where people have a very high pain tolerance and no particular urgency around getting things done. But for me that's not the right kind of boring.
Re:Choose Boring Technology (2015) by mlthoughts2018 on Sunday June 07, 2020 @10:47AM (#23447714)
Java also seems to bring with it a lot of cultural baggage for bloated design thinking, like needing overkill factory patterns, accessor patterns, and more.

If you start creating something called AbstractMonthlyBillingReportAggregatorFactory that inherits from AbstractBillingReportFactory that inherits from AbstractReportFactory all of which implement a Report interface, things have gone unsalvageably far off the rails to be useful any more.

It’s fair to say you could do this same thing in C++ or Python etc., and sometimes that does happen. But just anecdotally observing this in many companies, it happens _on purpose_ with Java all the time, but much less so in other ecosystems. In other systems it’s just much easier to get things done without resorting to tons of inheritance misdirection, and many great common libraries already solve problems in those ecosystems with minimal inheritance bloat, giving lots of easy to follow examples.

Re:Choose Boring Technology (2015) by the_af on Sunday June 07, 2020 @11:18AM (#23447972)
This is true about enterprisey patterns, which for some reason plague Java more than other languages. I think it's a flaw of the moment in time when Java became ubiquitous -- I mean, it still runs most software than many fashionable technologies these days, but it's not as dominant as it used to be -- rather than the language itself. Modern Java doesn't look like that, but indeed older software built with it did.

These are fashions in the software engineering world. Had Ruby dominated the development world at the time Java did, you would have seen the same enterprisey patterns.

Re:Choose Boring Technology (2015) by mlthoughts2018 on Sunday June 07, 2020 @11:24AM (#23448018)
I think that’s largely true, but not completely. It just turns out that certain language features sincerely matter more for business software, such as rapidly mutating object & data models without needs to update them as a ripple effect through other designs in the system, and the ability to trade-off safety or correctness as resources just like memory or runtime complexity, which Java as a language is just not set up to do easily.
Re:Choose Boring Technology (2015) by the_af on Sunday June 07, 2020 @12:23PM (#23448444)
Maybe my brain is slow today, so please excuse me if this is not what you're saying. Are you arguing that Java is not set up to "do easily" business software or rapidly mutating data structures? Because Java as a battle tested platform has evolved many cool features for exactly those cases. There are even commercial pauseless garbage collectors (and the noncommercial ones are pretty advanced, too). Java and the JVM run circles around many of the technologies that became fashionable later, such as Ruby or the many javascript frameworks.

For an article about "stick to boring and reliable" there seems to be too much push back against Java. I understand the psychological processes involved: stick to boring unless it's the one technology one personally finds unpalatable -- for me that would be COBOL or ColdFusion (and yes, I'm aware Java has been compared to COBOL by proponents of trendier technologies! :P )

Re:Choose Boring Technology (2015) by mlthoughts2018 on Sunday June 07, 2020 @02:16PM (#23449349)
A reliance on object orientation as a non-negotiable language requirement is intrinsically antithetical to efficiency for business software.

If a language supports what I would call “lightweight OO” - extremely low boiler plate, zero required OO constructs (purely optional), and language features that render the concept of dependency injection intrinsically obsolete (because mocking can be done purely through introspection at no cost), then that flavor of OO is well suited for business problems.

It has less to do with things like JVM or GC oddities, because those can be straightforwardly engineered around. It’s more about what non-negotiable commitments to specific patterns or strategies come along with the language choice.

Pure functional languages are the worst offenders in this area, which is why their benefits aren’t actually benefits and they are poorly suited for business software. Of the core “industry standard languages” Java would be the next worst offender.

Conversely, I think C# is an ecosystem that suffered the same limitations as Java but found ways to extend and reinvent that make it more attractive now, though still far behind Python, C and C++.

Re:Choose Boring Technology (2015) by the_af on Sunday June 07, 2020 @04:06PM (#23450329)
> A reliance on object orientation as a non-negotiable language requirement is intrinsically antithetical to efficiency for business software.

and

> Pure functional languages are the worst offenders in this area, which is why their benefits aren’t actually benefits and they are poorly suited for business software. Of the core “industry standard languages” Java would be the next worst offender.

You seem to be talking out of principle instead of actually having hands-on experience developing large systems in Java. To be honest, it doesn't seem you're familiar with the language or the platform.

I'm not interested in debating your theoretical preconceptions.

Re:Choose Boring Technology (2015) by mlthoughts2018 on Sunday June 07, 2020 @04:13PM (#23450386)
I work in a company whose core systems are all written in Java, I deal with modern Java every day.
Re:Choose Boring Technology (2015) by the_af on Sunday June 07, 2020 @04:20PM (#23450440)
Well, it really, really doesn't show. I'll have to take your word for it. I suppose your company is doing badly, since Java is really not suitable for its needs?

You seem likewise uninformed about functional programming and how it has been used to write extremely high-performance fintech systems.

Re:Choose Boring Technology (2015) by wpietri on Sunday June 07, 2020 @06:34PM (#23451581)
No, mlthoughts2018 doesn't "seem" that way. You have decided they are, and are camouflaging your personal chosen interpretation with false objectivity.
Re:Choose Boring Technology (2015) by the_af on Sunday June 07, 2020 @06:58PM (#23451805)
Sorry, I'm even less interested in arguing with what you think of another user who doesn't need your help defending their point.

In any case, that Java's OOP cannot be successfully deployed for business software is counterfactual. Anyone insisting on that point is unfamiliar with Java.

Re:Choose Boring Technology (2015) by dnautics on Sunday June 07, 2020 @01:24PM (#23448916)
> Which for some reason plague Java more than other languages.

Is the reason a mystery? Java is the language that got a multibillion dollar marketing pitch at its inception. It was designed to be in "the enterprise" from day 1.

Re:Choose Boring Technology (2015) by the_af on Sunday June 07, 2020 @03:57PM (#23450245)
I'm not saying it's exactly a mystery. Java had the misfortune of being ubiquitous when XP and design patterns became all the rage. Every intern using Java had to learn "patterns", and schools where teaching them too. Heavyweight frameworks like Spring (and before that, EJBs( were all the rage too. It took a lot to extricate modern Java from that situation.
Re:Choose Boring Technology (2015) by dnautics on Sunday June 07, 2020 @07:33PM (#23452041)
sorry i think I misinterpreted when you said "for some reason"
Re:Choose Boring Technology (2015) by Pxtl on Sunday June 07, 2020 @12:15PM (#23448392)
Yeah, boring vs exciting is a false dichotomy. Early-2000s Enterprise Java is neither - it's intimidating, because the code is so bureaucratic that it's impossible to properly understand the implications of any given action, and bureaucratic software is inherently buggy in my experience because there are so many interactions that inevitably something will trip over an unexpected edge-case of some other thing.
Re:Choose Boring Technology (2015) by the_af on Sunday June 07, 2020 @11:15AM (#23447948)
> For me, part of "boring" is being like a 2x4 or a claw hammer: simple, solid, reliable, well understood. A lot of the Java world is nothing like that.

Strong disagree. This is exactly what most of the Java world is like: well understood and reliable. I wonder if people who say things like you did actually use it for their day jobs, or rely on things people using other technologies claim in their blogs.

Re:Choose Boring Technology (2015) by wpietri on Sunday June 07, 2020 @01:34PM (#23449017)
Wonder no more! Two years ago I did a 9-month contract in Java. I have used Java for consulting gigs going back to 2000. I honestly expected it to be a pleasure to work with this most recent time in hopes that things were usefully boring. That was not my experience.
Re:Choose Boring Technology (2015) by randombytes6869 on Sunday June 07, 2020 @05:43PM (#23451133)
Java is very similar to C++. Its boring in the sense that most things have been around forever and really old code is terrible but you still have to deal with it because backwards compatibility is so good. If you don't consider Java boring I wouldn't consider C/C++ boring either.