Beta

×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Love and Hate For Java 8

samzenpus posted 1 year,5 days | from the pros-and-cons dept.

Java 434

snydeq writes "Java 8 brings exciting developments, but as with any new technology, you can count on the good, the bad, and the headaches, writes Andrew C. Oliver. 'Java 8 is trying to "innovate," according to the Microsoft meaning of the word. This means stealing a lot of things that have typically been handled by other frameworks and languages, then incorporating them into the language or runtime (aka standardization). Ahead of the next release, the Java community is talking about Project Lambda, streams, functional interfaces, and all sorts of other goodies. So let's dive into what's great — and what we can hate.'"

cancel ×

434 comments

Sorry! There are no comments related to the filter you selected.

ugh (-1)

Anonymous Coward | 1 year,5 days | (#44386907)

Java8 is bound to be one giant freakin drama.

Gawd (-1)

Anonymous Coward | 1 year,5 days | (#44386917)

Java is a brogrammer language. It's for people that find writing real programs, in real languages, too hard.

Re:Gawd (5, Insightful)

jcr (53032) | 1 year,5 days | (#44387021)

Java is a real language, and a lot of real programs have been written with it. It's not a good language, but that doesn't make it trivial.

-jcr

Re:Gawd (0, Troll)

antsbull (2648931) | 1 year,5 days | (#44387063)

Java is a real language, and a lot of real programs have been written with it. It's not a good language, but that doesn't make it trivial.

-jcr

Its no better or worse than any other languages out there. If you think it is, then you probably need to get out of your mom's basement and into the real business world more.

Re:Gawd (4, Funny)

multiben (1916126) | 1 year,5 days | (#44387091)

So you're saying that *all* programming languages are exactly as good each other then? Perhaps you are spending too much time in the "real" world?

Re:Gawd (5, Insightful)

CastrTroy (595695) | 1 year,5 days | (#44387123)

I would almost agree, that any language is as good as any other. With a few exceptions, like "whitespace" which isn't meant to be a practical language anyway. What really sets languages apart is the tooling that's built up around them. The debuggers, the IDE, the profilers, etc. Also, the consistency and extent of the standard API plays a huge role in how useful a language is. I would rather use Brainfuck with an amazing tools and a rich API than use Java, Python, or Ruby with bad tools and an inconstent and incomplete API.

Re:Gawd (0, Interesting)

Anonymous Coward | 1 year,5 days | (#44387241)

http://www.paulgraham.com/avg.html

Re:Gawd (5, Funny)

ebno-10db (1459097) | 1 year,5 days | (#44387603)

Lisp may be an interesting language, but Lispers scare me. The glow in their eyes when they evangelize about the Mother of All Languages reminds me of Village of the Damned [imdb.com] .

Re:Gawd (1)

Anonymous Coward | 1 year,5 days | (#44387783)

Lisp is the perfect example of CastrTroy's point -- for a long time the interesting development tools were proprietary, expensive, and obscure. Supposedly things have improved now, but lisp wasn't very practical to use for anything other than emacs.

Re:Gawd (5, Insightful)

Anonymous Coward | 1 year,5 days | (#44387395)

I think one of the big problems is that programmers are very much biased towards thinking that what should be considered matters of preference are absolute right/wrongs, and most of the differences between major languages themselves are simply matters of taste or convenience. It's why you can get almost any software engineer to tear apart someone else's code, even if the code is written as well or better than anything they've written: there's pretty much always small differences that the engineer will find offensive even though there's no practical impact.

Re:Gawd (4, Interesting)

jythie (914043) | 1 year,5 days | (#44387413)

That was my general thought. Most languages are pretty much interchangeable. What tends to set them apart is the ecosystem they exist in... not just in terms of the 'hard' things like libraries and tools, but the 'soft' things like how much of a developer community (and candidate pool) exists for any particular domain.

Which kinda makes me wonder why language designers bother with these updated versions out side some fetishistic desire to make their language of choice more complicated. Though I guess it does help separate out the 'elite and in the know' from the 'newbies and outsiders'.... though I think C++ really takes the cake in that regard.

Re:Gawd (5, Funny)

ebno-10db (1459097) | 1 year,5 days | (#44387595)

May you spend 100 years in purgatory, writing AI programs in COBOL.

Re:Gawd (0)

Anonymous Coward | 1 year,5 days | (#44387555)

If you need all of those things to help you program better, maybe the language you're using really does suck.

Re:Gawd (5, Insightful)

gnupun (752725) | 1 year,5 days | (#44387845)

I would almost agree, that any language is as good as any other. With a few exceptions, like "whitespace" which isn't meant to be a practical language anyway.

This is a false statement, they are not as good as the other. Each language is designed to be strong in certain areas while weak/ignoring other areas. As an example, C promotes code close to machine language while Java shields the programmer from manual memory management (GC). There are many such design issues that make a language a natural fit for certain applications while making other languages ill-fitted.

What really sets languages apart is the tooling that's built up around them.

While tools may be important, they are of a secondary importance.

Re:Gawd (3, Insightful)

cheesybagel (670288) | 1 year,5 days | (#44387127)

Well its a mixed bag really. It is a lot more verbose than other recent languages. The type system is inane. The main advantage is you have binary portability across platforms and a really huge standard API to use.

Re:Gawd (0)

Anonymous Coward | 1 year,5 days | (#44387205)

Java isn't a language, it's an operating system. And, no, I'm not just talking about the JVM. Java applications are utterly isolated from their environment. It's about as easy to get a Java program to interoperate with other Windows or Linux applications using basic system primitives as getting two applications on two different hosts to interoperate.

Once you go Java, you get sucked in. Nothing matters outside of the Java world. If you don't like the language itself, you use other languages, like Scala, which are built on Java (no, not just the JVM, but the Java libraries, too).

Re:Gawd (1)

jythie (914043) | 1 year,5 days | (#44387429)

Yeah, that is one of the things that tends to drive me crazy about programming in Java. I am used to languages that can link with each other or at least work together, java seems almost pathologically isolating.

Re:Gawd (2)

hedwards (940851) | 1 year,5 days | (#44387715)

That's sort of the point of the language. The ability to write once and not have to rewrite the entire thing because you're now on a different platform.

Your complaint is sort of like complaining about how hard assembly is and how they should figure out how to make it more easily read and do things for you.

Re:Gawd (1)

jcr (53032) | 1 year,5 days | (#44387301)

Its no better or worse than any other languages out there.

That's the voice of inexperience, right there...

get out of your mom's basement

Gosh, what a clever quip. You must be positively venerable to be able to toss off a withering cutdown like that.

-jcr

Re:Gawd (1)

antsbull (2648931) | 1 year,5 days | (#44387649)

No, its just the realisation that if Java was a terrible language it would have died a long time ago. The financial services and banking industry that I work in - the only other services we have ever had to interop with in the last 12 years are Java or .Net based. If Java was such a rubbish language that would not be the case, although I suspect that due to you not really knowing any better you don't have a clue about the real world.

Re:Gawd (1, Flamebait)

jcr (53032) | 1 year,5 days | (#44387787)

No, its just the realisation that if Java was a terrible language it would have died a long time ago.

Your optimism is astonishing.

you don't have a clue about the real world.

I spent most of the 90's working on Wall Street, and in Chicago at the Board of Trade. JP Morgan, Salomon Brothers, Phibro Energy, and UBS/Warburg. Since leaving the financial industry, I've been working in the Silicon Valley, much of that time being spent at what is now the most profitable technology company in existence.

But, if as you say I don't have a clue about the real world, I suppose I'll have to bow to your superior intellect and settle for Java as you have. How depressing.

-jcr

Re:Gawd (0)

Anonymous Coward | 1 year,5 days | (#44387849)

No matter how much money Apple makes, Objective-C is still a crappy language.

Re:Gawd (1)

jbolden (176878) | 1 year,5 days | (#44387461)

If you think that all programming languages are the same it is perhaps time you get out of your mom's basement and look at 60 years of efficiency studies which show much the opposite.

Re:Gawd (1)

ebno-10db (1459097) | 1 year,5 days | (#44387611)

Do you have a cite for that? Serious question. I've never seen such a study and would be very interested.

Re:Gawd (1)

jbolden (176878) | 1 year,5 days | (#44387931)

Sure the classic discussion is in Mythical Man Month. Here (http://sequoia.cs.byu.edu/lab/files/pubs/Delorey2007a.pdf) is a paper from 2007 which has references to many of the classic discussion. And Brooks I believe cites the original FORTRAN vs. assembler tests.

Re:Gawd (1, Insightful)

Anonymous Coward | 1 year,5 days | (#44387181)

Yes, yes, real programmers use real machine code, because assemblers are for pussies and compilers are for faggots. You keep telling them! I'll be over here, earning money.

Re:Gawd (1)

Anonymous Coward | 1 year,5 days | (#44387221)

No, real programmers use butterflies [xkcd.com]

Re:Gawd (-1)

RCL (891376) | 1 year,5 days | (#44387315)

I don't think real programmers are in that industry only to earn money. You need to have passion for that, otherwise you will quickly move on to something which requires less work and brings more (or at least comparable) money. The abstraction level of the language you use is a measure how much passion you have - if you prefer higher level "lego constructor" languages like Java and whatnot, you are probably not that passionate, you are in just for money - or maybe you are a latent mathematician who sees programming as an uninteresting "implementation detail". If you aren't afraid to go down to bits and opcodes (or even wires), then you probably are passionate about computers and can qualify for "real" programmer.

Money is a good thing to have, but if all I wanted was to earn money, I would be "programming" people, not computers.

Re:Gawd (5, Insightful)

hey! (33014) | 1 year,5 days | (#44387217)

Newsflash: People write major systems in Java that work pretty well. People do mission critical, bet-the-company stuff in Java, and it works. *Your* mileage may vary, but it always does.

This doesn't mean it' the best choice for everything, because *nothing's* the best choice for everything

And it doesn't mean Java doesn't have serious flaws. There's something deeply ingrained in Java that encourages over-engineering. But every language has its pitfalls.

Re: Gawd (-1)

Anonymous Coward | 1 year,5 days | (#44387343)

"major systems" ? no, major system problems, yes

Re: Gawd (5, Insightful)

S.O.B. (136083) | 1 year,5 days | (#44387567)

I used to work on a Java transaction processing application at a major financial institution that handled more than 1,000,000 transactions a day that consolidated data from Unix, mainframe and Windows systems. The transactions came from batch and online, client-facing applications that had five nines uptime requirements.

I don't know, sounds major to me. And we had no more "major system problems" than any other app and less than most.

It's not to say that Java is the answer to everything because nothing is. But it is definitely capable of doing the heavy lifting.

Re:Gawd (5, Insightful)

Coryoth (254751) | 1 year,5 days | (#44387771)

And it doesn't mean Java doesn't have serious flaws. There's something deeply ingrained in Java that encourages over-engineering. But every language has its pitfalls.

I don't think there's much in Java the language that encourages over-engineering; it's more in the community that surrounds Java. It's in the tutorials, and books, and code examples and discussion groups . It's in the frameworks and libraries.

The reality is that a "language" is as much shaped by the community that grows up around it as by the actual language itself. Perl doesn't have to be particularly unreadable, but the culture that grew up around perl in the late 90's that was obsessed with cute hacks, fewest keystrokes, and self created obscurity created a state where anyone learning perl was immersed in that culture and came out writing a lot of unreadable stuff. It is my understanding that since many of those programmers left perl for other languages perl has been remade as "Modern Perl" which is largely the same core language, just with a different and libraries, and is quite readable.

Conversely python can be made quite diabolical (just through together chains of nested list comprehensions and single character variables for example), but because it grew up with a culture of "one obvious way to do it" and readability most code you'll see tends to eschew such things, and strive to read like pseudo-code. Again, there's not that much inherent in the language, it's the cultural conventions surrounding the language that enforce much of that.

Java fell in with the Enterprise crowd, and consequently found itself immersed in a culture obsessed with design patterns and over-engineering. Had things gone a little differently with, say, in browser applets somehow becoming the primary driving force for java (let's assume they ran better say) then I doubt java would be known for over-engineering.

Re:Gawd (2, Interesting)

nmb3000 (741169) | 1 year,5 days | (#44387417)

Java is a brogrammer language. It's for people that find writing real programs, in real languages, too hard.

Well consider this your lucky day! With Java 8 you can now write JavaScript to run inside of Java! Sayeth TFA:

Netscape created a piece of software called LiveScript to allow for scripting on its Web servers. It decided to port it to its browser and needed a fancier name, so it licensed the Java trademark from Sun and called it JavaScript -- which would long promote the confusion that JavaScript had very much to do with Java. However, after the apAOLcalypse, some members of the 12 colonies of Netscape were not done and sought to continue Netscape's plan of rewriting their browser in Java. In order to do so, it needed to create an implementation of JavaScript in Java. Netscape called the project Rhino; as with turducken, ours is not to question but to enjoy.

So just in case the seemingly unquashable confusion between Java and JavaScript wasn't bad enough, it's about to get worse. But I guess you can't blame Oracle -- they heard you like to use JavaScript and Java, so now you can JavaScript with your Java while you Java with your JavaScript. Or something. Plus throw in some Node.js bullshit for good buzzword coverage.

While there are many places that it can be useful to run JavaScript from within Java....

This is just plain bad.

Re:Gawd (1)

Atzanteol (99067) | 1 year,5 days | (#44387621)

Why are you all feeding the troll? Let the moderation work and ignore the asshole.

I'm disappointed (2)

msobkow (48369) | 1 year,5 days | (#44386961)

I'm disappointed. I expected Lambda functions to be closer to Erlang's implementation, where you can access the variables of the enclosing function/method safely. But perhaps the examples in the article are just too simplistic to show such behaviour.

Re:I'm disappointed (0)

Anonymous Coward | 1 year,5 days | (#44387029)

Can you do that without adding an indirection layer that would break optimization in existing VM implementations?

Re:I'm disappointed (3, Interesting)

msobkow (48369) | 1 year,5 days | (#44387079)

I think the bigger reason they probably didn't do it is that Erlang only lets you assign a variable once, so there are no concurrency issues with read/write of variables. One of the neat side effects of this is that a service/method which takes a lambda argument can be parallelized behind the scenes without changing the meaning of the code execution.

Another thing that puzzles me is that Java lambdas seem to be based on the idea of overriding a method of a class. That seems to me to be a critically limiting way of implementing them vs. function prototypes/templates, as there is no way to specify multiple lambdas being passed to the evaluator.

Re:I'm disappointed (1)

EvanED (569694) | 1 year,5 days | (#44387323)

Another thing that puzzles me is that Java lambdas seem to be based on the idea of overriding a method of a class. That seems to me to be a critically limiting way of implementing them vs. function prototypes/templates, as there is no way to specify multiple lambdas being passed to the evaluator.

Huh? I'm pretty sure you're not right about it being a limitation, but nor do I understand what you mean from "versus" to the end. Can you elaborate?

Re:I'm disappointed (0)

Anonymous Coward | 1 year,5 days | (#44387371)

Your last sentence doesn't make much sense to me. Do you mean there's no way to specify a polymorphic lambda that would use static type information to call the appropriate method for a given set of arguments? I'll assume so.

Setting aside that it's a terrible idea... if you really need that to be done efficiently, you can create an interface or abstract class that has a set of polymorphic methods that each take different arguments, and then pass in anonymous inner class that implements each polymorphic variant. That way when the caller calls ifoo.bar(baz), the compiler will choose the correct version of the method.

Hint: Java 8's lambdas are just syntactic sugar for the non-polymorphic version of what I just described; they save you from having to declare the interface/abstract class, save you some typing when instantiating the anonymous inner class, and they save you a few keystrokes when invoking the method.

Your desire to include polymorphism would overly-complicate the lambda-syntax, and its only benefit would be so that a few inexperienced devs could say "look what I did, dur hur" and then leave a maintenance nightmare where people would occasionally end up accidentally calling the wrong version because of typecasts carried forward by automated refactorings, except nobody would notice the mistake until it's in production.

Re:I'm disappointed (1)

datavirtue (1104259) | 1 year,5 days | (#44387839)

This reminds me, did they ever publish the answers to our questions from Gosling?

Re:I'm disappointed (3, Funny)

binarylarry (1338699) | 1 year,5 days | (#44387913)

They're still waiting for the application with the answers to start up.

Nooooo (-1)

Anonymous Coward | 1 year,5 days | (#44386967)

Nooooo. Not Java. They are better than Microsoft. Right?

Re:Nooooo (2)

armanox (826486) | 1 year,5 days | (#44386983)

Oracle is good at one thing: making Larry Elison money. Microsoft isn't sure what they're good at.

Re:Nooooo (0)

Anonymous Coward | 1 year,5 days | (#44387309)

Microsoft isn't sure what they're good at.

Now, now, that's just not true. They know for sure that they are good at not selling Surface RT tablets.

Finally Fixing the Date stuff (4, Informative)

CastrTroy (595695) | 1 year,5 days | (#44386971)

Proper date and time handling is one of the reasons I really prefer .Net to Java. The support for dates is just deplorable in Java. One shouldn't have to use an external dependancy, like JodaTime to handle basic date operations. If they could also add a "Decimal" data type, that is, a base-10 decimal primitive datatype, I think Java would be a much more useful language for day to day programming. Almost all the programming I do I would rather use a Decimal data type rather than a float data type, but very few languages support it as a native data type. .Net is one of the few environments where they got this right.

Re:Finally Fixing the Date stuff (2)

msobkow (48369) | 1 year,5 days | (#44386999)

How would your Decimal concept be any more powerful than Number?

The one thing I wish they'd have done with Number is added Precision and Scale to it's usage, which would be invaluable for things like financial and scientific calculations.

Re:Finally Fixing the Date stuff (1)

msobkow (48369) | 1 year,5 days | (#44387015)

Sorry. I meant "BigDecimal".

Re:Finally Fixing the Date stuff (2)

CastrTroy (595695) | 1 year,5 days | (#44387045)

They need to support it as a native numeric type, so it's not so difficult to use. If it was a native type with proper mathematical operators you wouldn't need questions on Stackoverflow [stackoverflow.com] about how to add two values together.

Re:Finally Fixing the Date stuff (3, Insightful)

msobkow (48369) | 1 year,5 days | (#44387109)

I'd hardly call it "difficult" to use, any more than it is to use the wrappers for the native types. Still, it would be *nice* if you could use "+" instead of "add()", but really that's just syntactic sugar.

Re:Finally Fixing the Date stuff (5, Insightful)

Anonymous Coward | 1 year,5 days | (#44387163)

I'd hardly call it "difficult" to use, any more than it is to use the wrappers for the native types. Still, it would be *nice* if you could use "+" instead of "add()", but really that's just syntactic sugar.

To some extent, anything beyond raw binary notation used by your processor is just some form or another of "syntactic sugar" transformed by some intermediate tool.

Re:Finally Fixing the Date stuff (0)

Anonymous Coward | 1 year,5 days | (#44387193)

*clap* *clap*

Re:Finally Fixing the Date stuff (0)

Anonymous Coward | 1 year,5 days | (#44387209)

Where are my mod points when I need them? I'd +1, thumbs up if I could.

Re:Finally Fixing the Date stuff (5, Insightful)

petermgreen (876956) | 1 year,5 days | (#44387237)

People like to dismiss syntactic sugar as unimportant but IMO it's the difference between code that is pleasant to read and write and code that is a PITA to read and write.

I wish some fork of java would happen and take off that adds back in the basic features sun left out. Stuff like properties*, user defined types without an implicit reference, unsigned numeric types, operator overloading, parameter pass by reference etc. Some of that is syntactic sugar, other parts not so much. Ideally these features would be done in a way that could somewhat work on existing VMs though some features would likely require VM enhancements to operate efficiently.

Unfortunately MS has already taken the name J++ :(

* No that javabeans shit doesn't count.

Re:Finally Fixing the Date stuff (2)

jythie (914043) | 1 year,5 days | (#44387457)

I think in general people use the term 'syntactic sugar' when they feel that it does not increase readability. I know I tend to use it to describe features that neither add functionality nor seem to make the code easier or harder to write. Things that do one or the other I just call 'useful'.

Re:Finally Fixing the Date stuff (1)

LO0G (606364) | 1 year,5 days | (#44387911)

Interesting. I've always used "syntactic sugar" to mean language features that are fundamentally implemented in the front end. For example C++ lambdas are effectively syntactic sugar - it's a clean syntax that wraps an anonymous class declaration (with the lambda capture values being class members and the lambda body being an "operator()" method).

Another example is C++ reference parameters - under the cover most C++ compilers implement reference parameters as pointer to type parameters and the reference parameter access is syntactic sugar for pointer indirection.

These examples are simplifications but they serve to demonstrate my thinking.

Re:Finally Fixing the Date stuff (1)

jbolden (176878) | 1 year,5 days | (#44387477)

There are lots of languages built on top of the JVM that can even use Java libraries which have totally different syntax. Clojure being a great example, and Scala another.

Re:Finally Fixing the Date stuff (2)

KonoWatakushi (910213) | 1 year,5 days | (#44387813)

Unfortunately, it seems that JVM based languages are still limited by the lack of unsigned types. What a remarkably stupid decision to omit them.

Re:Finally Fixing the Date stuff (-1)

Anonymous Coward | 1 year,5 days | (#44387549)

Operator-overloading is by far one of the most retarded concepts in computing I've ever encountered, truly for the lazy fuck who thinks saving a few keystrokes actually saves time in the long-run. That annoying nose-picking aspie engineer who writes the unreadable code everybody else has to deal with? That's one of the many annoying things they do. Which is fine, if you're that one aspie the company can just shove alone in a basement cubicle away from the civilized people and pay your bonus in Chee-toe bags.

-- Ethanol-fueled

Re:Finally Fixing the Date stuff (0)

Anonymous Coward | 1 year,5 days | (#44387863)

Agree with the general comments on operator overloading, perhaps without the vitriol. If Scala had left out operator overloading it would be a pretty awesome language.

Re:Finally Fixing the Date stuff (3, Insightful)

Alomex (148003) | 1 year,5 days | (#44387307)

Actually it isn't. The add() method belongs to the first parameter, whereas the native '+' implementation (used to) belong to neither and if you think about it really should be that way.

'+' is not a method or property of the first parameter. the correct interpretation of a+b is that this creates a unnamed virtual object number tuple with the method add.

Re:Finally Fixing the Date stuff (4, Insightful)

Alomex (148003) | 1 year,5 days | (#44387379)

Academic types have rejected 95% of all real advances in programming languages for nearly 4 decades as "syntactic sugar" while they carry on with their abstract type theory which has had rather limited impact in the real world in the same time span.

Do yourself a favor and do away with the "syntactic sugar" crutch and try to judge a language proposal on it's own merits. Is it better to write 3+5 than 3.add(5) ?

The answer is obviously YES, so who the hell cares if it is syntactic sugar, syntactic salt or syntactic coconut sprinkles.

If it makes life better it should be adopted. End of story.
p.s. there are potential drawbacks with operator overloading, but "syntactic sugar" ain't one of them.

Re:Finally Fixing the Date stuff (0)

Anonymous Coward | 1 year,5 days | (#44387223)

> you wouldn't need questions on Stackoverflow [stackoverflow.com] about how to add two values together

Sorry, but if you dont know what an immutable object is, then you need to go back to first or second year CS (depending on where you went).

What's even funnier is that the "native type" syntax would also be like immutable objects since you would also need an assignment.
its
a=a+b
not just a+b

Re:Finally Fixing the Date stuff (2)

EvanED (569694) | 1 year,5 days | (#44387349)

Sorry, but if you dont know what an immutable object is, then you need to go back to first or second year CS (depending on where you went)

Maybe the person asking the question (I didn't look) was in first or second year CS.

What's even funnier is that the "native type" syntax would also be like immutable objects since you would also need an assignment.
its
a=a+b
not just a+b

a += b.

In fact, even well-aware of how it actually behaves,

a.add(b)

still seems to me like it should be closer to

a += b

than to

a + b

.

Re:Finally Fixing the Date stuff (5, Informative)

viperidaenz (2515578) | 1 year,5 days | (#44387273)

New Java Date Time API for Java8: http://openjdk.java.net/jeps/150 [java.net]
AKA JSR 310

Who has the biggest kitchen sink? (0)

Anonymous Coward | 1 year,5 days | (#44387023)

Having grown up on Java, I know that it's always had a mindset of trying to be pretty much everything to everyone (even if sometimes half-heartedly.) That said, I'm tired of every language trying to see just how much of every possible programming model, paradigm, or feature it can tack on. It really seems like some bizarre dick-measuring contest among language designers these days.

Re:Who has the biggest kitchen sink? (0)

Anonymous Coward | 1 year,5 days | (#44387113)

"Why standardize common and popular features from other languages and incorporate them directly into the language? It's much more fun to manage conflicting, incomplete, and thoroughly fucked up inter-library dependencies, or have 17 different programming language standards along with their associated toolchains, maintenance nightmares, and patching hassles!"

Oh wait, not a bit of that is remotely true.

Re:Who has the biggest kitchen sink? (0)

Anonymous Coward | 1 year,5 days | (#44387545)

And yet I'm sure in the next breath you'd complain that Perl was too complicated.

Re:Who has the biggest kitchen sink? (2)

jythie (914043) | 1 year,5 days | (#44387481)

Sadly, people like to think that their tool of choice is the best, and it is the best everywhere and applicable to all situations, thus language designers over time try to make their preferred language more and more like every other language till it becomes and over complicates mess that you basically have to learn half a dozen dialects in order to understand any random chunk of code. Just look at C++, you can almost tell which year the person who wrote the code learned it in.

Re:Who has the biggest kitchen sink? (1)

flimflammer (956759) | 1 year,5 days | (#44387581)

So...the language should never advance in areas where it is lacking?

Re:Who has the biggest kitchen sink? (0)

Anonymous Coward | 1 year,5 days | (#44387641)

More like if you manufacture cars and then see how agile and quick motorcycles are, you should probably not attempt to improve your car either by slapping a motorcycle on to the side or cutting your cars down the middle. It's not to say you can't find inspiration from motorcycles to improve the design of your car (e.g., lighter weight), but let cars be cars and motorcycles be motorcycles and let the user pick the right tool for the job.

Re:Who has the biggest kitchen sink? (1)

elabs (2539572) | 1 year,5 days | (#44387905)

It should advance legitimately instead of just copying other people's stuff. Java 8 is simply playing catch-up to C# at this point. They need to come up with their own ideas and contribute something new.

Don't have to use any of it (1)

udachny (2454394) | 1 year,5 days | (#44387061)

I don't use annotations and actually any other irrelevant things ("for each", generics, most other things that were added with J2SE5.0) that have been added over time just because... for no reason but to pretend this changes anything for the better in any way and the JVM still runs the code that is written without all that syntactic sugar, etc., so no big deal, if you care you can use it, if you don't, nobody forces you.

JavaFX (the new Applet?) and Swing - anything new? (-1)

Anonymous Coward | 1 year,5 days | (#44387141)

While the author states that he does not care about the "client" side of java (mentioning JavaFX but also Swing) i do* (mostly about Applets - the JavaFX stuff, as it's the new Applet thing in my understanding) - so... what's (new) with that folks?

* please... i know all the bullshit you haters prepare to write so don't waste our time! and yes, applets are great!!!

Re:JavaFX (the new Applet?) and Swing - anything n (1)

viperidaenz (2515578) | 1 year,5 days | (#44387261)

One new thing for JavaFX http://openjdk.java.net/projects/jdk8/features#153 [java.net]
It's pretty minor.

Re:JavaFX (the new Applet?) and Swing - anything n (0)

Anonymous Coward | 1 year,5 days | (#44387663)

thanks dude - yes, the one new JavaFX feature ("Enhance the java command-line launcher to launch JavaFX applications.") is pretty minor but that page you provided is very informative.

Fuck java! (-1)

Anonymous Coward | 1 year,5 days | (#44387167)

I despise java so hard. I'm stuck supporting someone fairly clueless who uses some java programs regularly. Theres just no way out of it for me aside from something serious. Like death.

Java seems to spawn the most craptastic, half-assed, slapped together, mostly works, good nuff... programs, communities, information, websites, support, and people. It's the

And between the updates it's ALWAYS needing. The security holes. And just general shitty running of the entire thing... I. hate. it. so. hard.

Re:Fuck java! (0)

Anonymous Coward | 1 year,5 days | (#44387245)

Theres just no way out of it for me aside from something serious. Like death

Surely quitting your job and getting a new one is less serious than death.

Re:Fuck java! (1)

hedwards (940851) | 1 year,5 days | (#44387781)

He's stuck on an island where there's only one job, and if he doesn't work he doesn't eat. Also, he can't get the job back if he quits.

Re:Fuck java! (1)

binarylarry (1338699) | 1 year,5 days | (#44387901)

He also apparently has ADD.

Java? (0)

Anonymous Coward | 1 year,5 days | (#44387263)

Deleted from all systems at least a year ago. Why bother?

Re:Java? (3, Insightful)

wmac1 (2478314) | 1 year,5 days | (#44387347)

Oh boy!! If that's what you understand of java...

FYI, You are still using java every single day (as in websites using Java in server side, on phones, on smart cards, on home appliances, ...).

Re:Java? (0)

Anonymous Coward | 1 year,5 days | (#44387571)

home appliances

People always bring this up, but I've never actually seen it. Show me one home appliance that is not a novelty item (like the KDE refrigerator) that uses Java. And by home appliance, I mean something like a blender, a toaster, or a microwave.

Re:Java? (0)

Anonymous Coward | 1 year,5 days | (#44387877)

You mean like all of my Blu-Ray players?

The old adage comes back and back (5, Insightful)

countach (534280) | 1 year,5 days | (#44387391)

The old adage is always applicable: Those that do not use LISP are condemned to reinvent it. Badly.

Re:The old adage comes back and back (1)

Anonymous Coward | 1 year,5 days | (#44387425)

Is it even possible to make LISP worse?

Re:The old adage comes back and back (2, Funny)

manu0601 (2221348) | 1 year,5 days | (#44387533)

Sure: reimplement it in Java. Even better, use it within J2EE so that it takes 45 seconds to start up.

Re:The old adage comes back and back (5, Funny)

ebno-10db (1459097) | 1 year,5 days | (#44387711)

Sure: reimplement it in Java.

That's called Clojure.

Even better, use it within J2EE so that it takes 45 seconds to start up.

They sped it up?

Re:The old adage comes back and back (1)

hibiki_r (649814) | 1 year,5 days | (#44387815)

Every expression must be surrounded by three parenthesis, and followed by a semicolon. Also, when you reach 5 levels of depth, the last element of a list of parameters becomes the function, instead of the first.

Guy Steele (1)

Anonymous Coward | 1 year,5 days | (#44387575)

The old adage is always applicable: Those that do not use LISP are condemned to reinvent it. Badly.

Not that I totally disagree with you, but that's an amusing statement given that Guy Steele helped to write the implementation of Java per invitation of Bill Joy.

One must also remember the historical context when Java was created. A quotation from Steele on ll1-discuss [mit.edu] : "We were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp. Aren't you happy?"

Given how mainstream Ruby, Python, and even JavaScript are now for "real" development, back in the day "real" programmers only used native binaries for "real" applications. Java managed to pull a lot of people towards the dynamic-ish side of things. Certainly Perl (and shell) was around for use by sysadmins and the like, but those guys weren't "real" programmers.

IMHO, without Java being pushed as an alternative to C/C++, I don't think we would have gotten the renaissance of dynamic languages we have today; or, at the very least, it would have taken longer to get to the same point we are today. I say this as someone who has no great love for the language, but I have no trouble accepting its place in the evolution of languages in terms of technology and culture.

Re:Guy Steele (2)

ebno-10db (1459097) | 1 year,5 days | (#44387853)

The email you cite also contains (quoting a previous email?) what I've long considered the real secret of Java's success:

Java did not achieve acceptance based mainly on the
      features it has (or does not have). It was accepted because
      Sun expended a huge amount of effort (not to mention money)
      promoting Java and the things built from it, and wisely
      positioned it against the nightmare that is C++.

The Guy Steele wrote:

We were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp.

Halfway to Lisp? Other than GC, there isn't much about Java that's Lisp like. Guy was rationalizing.

IMHO, without Java being pushed as an alternative to C/C++, I don't think we would have gotten the renaissance of dynamic languages we have today

I think Moore's law had a lot more to do with it than Java. Computers are now fast enough and have enough memory that you can afford to write many things in languages that are slow and memory intensive.

Re:The old adage comes back and back (0)

Anonymous Coward | 1 year,5 days | (#44387679)

What fraction of your +1 mods have ever written so much as one expression in LISP?

Re:The old adage comes back and back (1)

TFlan91 (2615727) | 1 year,5 days | (#44387847)

Too bad this poster is AC, I'd be owning this call out.

Re:The old adage comes back and back (1)

Alomex (148003) | 1 year,5 days | (#44387701)

Except that no one ever said that. Santayana said that about history and Henry Spence paraphrased it with Unix, but no one said it about Lisp.

In fact all the modern functional languages are remarkable in how much they are not like Lisp, starting from Scheme which managed to maintain the horrible parens notation but did away with almost everything else (dynamic scoping, no state, no control structures, no defun, etc.) and moving on to Python, Haskell and Scala.

standardization != stealing (2)

ChaseTec (447725) | 1 year,5 days | (#44387647)

Since when is standardization stealing? Do you think the Redhat/JBoss devs that wrote Seam complained when they were asked to create the CDI spec? Or when Gavin King (creator of Hibernate) worked on JPA? Maybe in some bizarro world standardization actually happens as technologies mature. You can look at the expert list of any of the JSR and see who these *thieves* are.

Still 32GB barrier (2, Informative)

michaelmalak (91262) | 1 year,5 days | (#44387681)

Java 8 is still limited to 32-bit array indexes, meaning, e.g. that arrays of doubles are limited to 32GB. Java won't get true 64-bit support until Java 9 in 2016.

Seems familar... (3, Informative)

ndykman (659315) | 1 year,5 days | (#44387683)

I remember when C# and .Net first came out, it was noted that it was just borrowing (some said stealing) from Java. When C# first came out, I didn't see it as becoming a leader in new language features, but it is clearly is, as Java 8 addresses a lot of things that been part of C# for a while.

Streams: Similar to IEnumerable and parts of LINQ (LINQ to Objects). Of course, IEnumerables are less strict on multiple enumeration (it may work). Being a bit more strict on this as Streams isn't a bad idea. Functional Interfaces; The article was light on details, but it seems to address the use cases that extension methods in C# addresses. Interesting that the body of the method appear in the interface. The ability for a class to override this default is a new idea, it will be interesting to see how this plays out. Not a bad way to go about this at all. Lambdas:Well, it's -> versus =>. I can't imagine the discussions that occurred over which one to choose.

I'm not sure about the JavaScript in Java feature. But, I've always said being able to execute Scheme in .Net would be useful to me, so this something that MS may have to address down the road.

For me, Java still needs some catching up in terms of parallel programming versus the Task Parallel Library (and the Dataflow Extensions). This is especially true with C# 5.0. Async and await are powerful language features. Personally, I'm still prefer C#. I like having first class generics, the full LINQ library (Expressions) and libraries like Reactive Extensions and Code Contracts (plus the static verifier) are nice features. But, all this in Java 8lis a step in the right direction. I just hope it isn't a case of too little, too late.

Re:Seems familar... (4, Interesting)

hibiki_r (649814) | 1 year,5 days | (#44387879)

More than reacting to C#, they seem to be reacting to other JVM languages that are just more attractive for any shop with experienced people.

  The JVM is often used to write large amounts of business crud: Take a parameter, query a database, process a list. Make a service call, transform the result into a slightly different list, merge the results with a different service, then return. You could write that kind of computation in a functional way using Groovy or Scala in half the number of statements. And if there's one rule for programming productivity is that the less statements you need to write, the faster the job can be written, and the less bugs you get.

When the people using your virtual machine start migrating to other languages you do not control, you are at risk of having the people building the language just porting the language away to a different one, and poof, Java becomes obsolete. Therefore, Oracle just has to improve Java.

Re:Seems familar... (2)

elabs (2539572) | 1 year,5 days | (#44387893)

C# was a fusion of Java, C++ and Delphi. Java 8 is just playing catch-up, sucking in all the innovation that the Microsoft guys have been doing over the past decade. I think you're right that Microsoft is innovating and blazing new trails at a much faster rate than Oracle can copy.

Optimized for Minecraft? (0)

Charles Jo (2946783) | 1 year,5 days | (#44387843)

That's the real question.

After years of saying java didn't need C# features (1, Troll)

elabs (2539572) | 1 year,5 days | (#44387865)

After years of saying java didn't need C# features they go and steal tons of them from C#! Whether it's properties, lambdas, function pointers or async/await, the Java community has always insisted that those features weren't necessary and that Java was no worse for omitting them. Now they go and steal them and put them into their products and everyone will declare them innovative new Java features. Last month it was Apple stealing the "Metro" UI from Windows Phone. Now this. Is Microsoft the ONLY company doing anything innovative anymore?
Load More Comments
Slashdot Login

Need an Account?

Forgot your password?
or Connect with...

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>