Slashdot Asks: What Are Your Favorite Java 8 Features? (infoworld.com)
New submitter liveedu shares with us a report from InfoWorld: When Java 8 was released two years ago, the community graciously accepted it, seeing it as a huge step toward making Java better. Its unique selling point is the attention paid to every aspect of the programming language, including JVM (Java Virtual Machine), the compiler, and other help-system improvements. Java is one of the most searched programming languages according to TIOBE index for July 2016, where Java ranks number one. Its popularity is also seen on LiveCoding, a social live coding platform for engineers around the world, where hundreds and thousands of Java projects are broadcasted live. InfoWorld highlights five Java 8 features for developers in their report: lambda expressions, JavaScript Nashorn, date/time APIs, Stream API and concurrent accumulators. But those features only scratch the surface. What makes Java 8 amazing in your opinion? What are your favorite Java 8 features that help you write high quality code? You can view the entire list of changes made to the programming language here.
Seriously? This is "journalism"? It's just a gushing promotion.
My favorite features are the brutally awful runtime performance and the incompatibility from one JVM/J2EE server to the next. Just awesome.
Runner up "feature" is the litigous vendor behind it all. I just *looooove* Oracle. They are such nice people!
It's the best thing java can do
Streams are my new happy place - mostly. I still use the for loops, but it has helped make some hard to understand for loop logic much clearer to understand.
This user's entire submission history consists of 2 stories about Java within an hour of each other. Smells like shill.
No more permgen!
The signiture feature is lamdbas for easier functional programming. Other goodies are nice but the lamdbas are the best new feature.
Did I say it first to get the 5?
Democracy Now! - your daily, uncensored, corporate-free
Have they added support for decimal numbers yet? .Net has had support for decimal numbers for quite a few years now (At least since 2003). It comes in really handy for doing applications dealing with money, which quite a lot of applications deal with. Floats and doubles don't work well with currency values as they can't hold exact decimal values for many commonly encountered numbers. There are work arounds like using integers to store the number of cents, and using classes like BigDecimal, but both of those have quite a few drawbacks.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
The biggest news in Java 8, obviously, are lambdas, but they also fit together with functional interfaces and java.util.stream.Stream to really change the way you build stuff in Java.
I'm absolutely loving, after making use of Java 8 streams, just how clean, succinct and compact a lot of my new code has become.
Oh -- and yes -- Java now has monads:
public String getLastFour(Optional employee) {
return employee.flatMap(employee -> employee.getPrimaryAddress())
}
See here
(Now if only they borrowed a bit more heavily from Scala or even C#: stuff like a Try monad, tuples and tuple destructuring and proper pattern matching (like C# is getting) would be awesome. Although given the glacial pace of standardization in Java-land, I'm not holding my breath.)
on the desktop anyway, and on the server it would be the ever increasing ram consumption by misguided java developers.
EOM...
Bye!
Java is so [Garbage Collecting] much fas [Garbage Collecting]ter then C becu [Garbage Collecting]se of its [Garbage Collecting] GC algorithms.
If y [Garbage Collecting] o [Garbage Collecting] u want raw [Garbage Collecting] [Garbage Collecting] [Garbage Collecting] speed, you h [Garbage Collecting] ave to prog [Garbage Collecting]ram in Java, not C or [Garbage Collecting] [Garbage Collecting] [Garbage Collecting] [Garbage Collecting] [Garbage Collecting] ASSembler.
With only 16Gb of [Garbage Collecting] [Garbage Collecting] [Garbage Collecting] RAM, I can compile a simple h [Garbage Collecting] [Garbage Collecting] [Garbage Collecting] [Garbage Collecting] ello W [Garbage Collecting] [Garbage Collecting] [Garbage Collecting] orld program, and it only takes 15 [Garbage Collecting] [Garbage Collecting] [Garbage Collecting] [Garbage Collecting] [Garbage Collecting] to run!
Windows should be redone in [Garbage Collecting] [Garbage Collecting] [Garbage Collecting] [Garbage Collecting] [Garbage Collecting] ..out of memory, stack trace, garbage here:
Agreed. Not the best choice for anything.
Bullocks.. There are places for using Java.. Lots of them actually...
Now, I'm not going to blow the fan boy smoke and say Java is great for everything, it's not. I've seen applications in Java that where wholly inappropriate for the language, but because that's what the development team knew, that's what we got, with horrible results, performance and foot print problems that would make your head spin. (It made mine spin, trying to keep up with the ever expanding hardware requirements to keep that garbage running.)
So what's Java good for? User interfaces (GUI, WEB you name it) it's great. Need it OS independent? Use Java. It's OK for data processing, but you will need lots of compute resources compared to the same thing in C++. Don't like the "hard work" involved in memory management, Use Java and restart often. However, if you have strict response time budgets, or cannot afford to cycle processes to keep running, and lots of extra hardware use something else... PLEASE use something else because I know I won't field those kinds of applications in Java for you, I've had enough pain in my life already and I'm going to quit your project if you try to make me do it again...
"File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
... is how easy it is to remove.
No, that would be JavaScript.
-SaNo
Yea, that's about it for Java.... Well that and that cool "Memory leaks are a thing of the past" idea can be nice... Yea, I know, Java still leaks memory from time to time... But they at least tried to rid us of all that malloc and free complications..
"File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
.... is a bit shit. It's better than the old one but not as easy to used as the Joda Time library it was based off of.
The best thing Java ever had is good marketing, that's it.
I don't think it's Oracle astroturfing. That would involve an entire paragraph dedicated to how Google is an evil IP pirate that must be destroyed at all costs.
The world's burning. Moped Jesus spotted on I50. Details at 11.
I mean, it's awesome that security fixes are now separate from feature changes and that they are so easy to install and track! I love being able to so easily manage a single runtime with no compatibility issues on my clients now too. Oracle has saved java!
Be Excellent To Each Other
C'mon we're pretty stupid to be here in the first place, but not that stupid. At least put an effort in to deceive us.
Right, I'm off to drop all my other languages and shift everything to Java...
Tools are tools. People need to quit arguing over how a tool was made and just use them.
I use Jenkins daily, it's written in Java. It's great. I have no desire to ever learn Java but it doesn't mean I can't use Jenkins. I have tools written in JavaScript, C, C++, Matlab, Simulink, Python, Perl, PHP, et al. As long as I have a way of getting it fixed if it's broken I don't care.
Additionally there's good money to be made in supporting tools that everyone still uses. COBOL, Fortran, Assembly all still have a massive amount of technical debt that may never go away.
They've finally done it! Java is now indisputably the best programming language available! They finally fixed all of the bugs! It's the most secure language available! Best of all, Oracle opened source the whole JVM under a copy-left license! Java 8 is indeed a game changer! These are exciting times indeed!
Use Java and restart often.
You're kidding, right? Restart often? Like, the whole machine, or just the JVM? What class of problem admits restarting often as part of a viable solution?
I love the fact when a non sanctioned language generates a lawsuit on demand when interacting with the APIs
http://saveie6.com/
I disagree. It's by far the best platform for those researching JIT compilation or designing advanced garbage collectors.
Like you'd want to do research with Python or something?
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
The best thing about Java 8 is that you only need 73 years' experience with it to land a great job.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
The fact that I still don't need to have Java installed anywhere to enjoy the Weird, Wild Web.
Many places use Cobol, and even more use Windows, too. That people use either doesn't mean Java is the right tool for the job. Any job (maintaining existing code notwithstanding).
Need it OS independent? Use Java.
Contrary to what Oracle's marketing dept says, in the real world even C is more portable.
User interfaces (GUI, WEB you name it) it's great.
I have no experience with Java on a web server, but after trying to use a few GUI programs in Java, sorry, no. It's a major pain in the ass to deploy: every single program needs a specific version of Java with specific configuration oddities, and even then there's no guarantee of success. And if you manage to start the program, expect crashes, ages-long startup, insane memory use, frequent pauses or outright lockups.
It's OK for data processing, but you will need lots of compute resources compared to the same thing in C++.
In other words, it's not OK. I'd understand if it was faster to write in Java than C++ -- after all, we don't use assembly for most tasks despite it being faster -- but you make your compute task being slower for no gain.
Don't like the "hard work" involved in memory management, Use Java and restart often.
Say what? If I wanted required restarts, I'd use Windows. Sorry but "reboot/restart often" is. not. acceptable., period.
It's hard to leak any memory in Perl or Python, and it's a rare thing in C++ unless you're a doofus.
The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
With better OOP Java wouldn't need stinkin' lambdas. Lambda's just give spaghetti coders more ways to write cryptic "cutesy" code. Flexible methods can usually do that same thing.
For example, if Java blurred the distinction between instances and classes, then one could attach an OnClick() method directly to a UI button object instead of pushing it to a listener doodad, which is silly and unnatural.
If the guts of a button object want to register the button's method(s) in a listener object via instantiantion forwarding (up the tree) or reflection; so be it, but the UI coder shouldn't have to care, that's usually internal UI engine guts that one should only have to study for debugging event handling.
Parent forwarding is when a parent method of the same name could specify BEFORE or AFTER to automatically run before or after the child method. (Without BEFORE or AFTER, the child method just overrides it so that it doesn't run.) Perhaps I'm using the wrong terms.
Table-ized A.I.
People with a sense of humour. It would certainly make me laugh, anyway.
"Its unique selling point is the attention paid to every aspect of the programming language". Other languages do this so hardly unique.
Tired of my customary (Score:1)
My favorite Java 8 Feature: the uninstall feature.
...the Ask toolbar. Who doesn't love that?
Momentarily, the need for the construction of new light will no longer exist.
"...the community graciously accepted it, seeing it as a huge step toward making Java better. Its unique selling point is the attention paid to every aspect of the programming language..."
Java 8 also turns your garbage into gold, serves you pancakes in the morning, and will never give you up. This is ad copy.
#o#
O Moo.
My favorite Java 8 feature:
java.net.UnknownHostException: slashdot.org: unknown error
Because really, it's impossible to get a better message than "unknown error" from the getaddrinfo call it's making under the hood.
Hrm, I guess that's a bug not a feature.
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
The best garbage collector collects Java and throws it out of the system
I'm afraid, sir, that it is you who are mistaken... about a great many things.
This is how Oracle "lost" the case:
1. They LOST a ruling at trial - the judge (Alsup, I believe) said that APIs cannot be copyrighted;
2. They WON a ruling at the court of appeals (fucking CAFC -- Court of Appeals for the Federal Circuit), that said that Judge Alsup was WRONG, and that APIs CAN be copyrighted;
3. They LOST a jury trial in which a jury said that Google's use of Oracle's APIs was Fair Use.
Here is one thing you may not realize: Fair Use is what's called an "affirmative defense". That means the only way to get out of a copyright claim by Fair Use is to *go* *to* *trial* and convince a judge of a jury to agree that you didn't copy to much of the original AND you're not harming the market for the original work AND etc. etc.
And a second, very important thing that you might not realize: the CAFC's ruling that APIs CAN be copyrighted? That's binding *everywhere* in the entire USA. The jury's decision that Google's use of Oracle's APIs was Fair Use? That's binding for *one* *case* *only*.
So the bottom line-- Are you a developer that would like to build a replacement library for someone else's API? (Like the WINE project?) Or are you a user of such projects? Is the company that owns the API in the US? Are you? Yeah, if the company wants to shut you down, you're fucked, unless you've got the time and money to prove your case of Fair Use in front of a judge or jury. (Are you Google?) ...and all thanks to Oracle.
"Or are you just too busy jacking off with the rest of the Slashdot circle-jerk crowd to give a shit about silly things like fucking facts?"
I don't know... are you? :-)
Haskell and Scala would beg to differ on your last point.
It's a bit like asking "What are your favorite cholera features", isn't it?
I guess the best Java 8 feature is that it enables more H1B visas?
That I don't have to install it, use it or ever have to deal with it again. That is by far it's best feature.
Anons need not reply. Questions end with a question mark.
Honestly, what the fuck are people doing that a Java program doesn't work everywhere? I don't code in Java anymore because my current job doesn't require it, but when I did, everything that I wrote worked on every single platform that we tested.
File under 'M' for 'Manic ranting'
Unless you like staying up all night tracking down errors in pointer arithmetic.
Lumping C and C++ together generally means you haven't looked at how dramatically the C++ language has changed recently, especially if you talk about pointer arithmetic. If you're using modern C++ and are still worrying about pointer arithmetic (i.e. you're not abstracting it away), you're probably doing it wrong.
The nice thing about C++ is that, quite often, those abstractions either cost nothing at all, or at worst, far less than interpreted languages. Also, having used modern C++ for a few years now, I think garbage collection is vastly overrated compared to reference counted pointers and simple RAII. C++ is still harder to use than Java or C# in many subtle ways, but basic memory management is no longer one of those persistent thorns.
Efficient compilation? Yeah, sadly, that's not C++, and likely never will be. There are some newer alternatives that have these features and compile quite efficiency, since they don't come with the baggage of backwards compatibility, but I'm not sure how much traction they're going to gain in practical measurements outside of some niche locations. Their biggest downside? Yeah, they're not backwards compatible with billions of lines of C or C++ code out in the wild.
Irony: Agile development has too much intertia to be abandoned now.
Here's the thing the very important thing you might not realize:
Fair use of a copyrighted work is *NOT* breaking the law.
File under 'M' for 'Manic ranting'
For a great many years, anything that involved Windows.
The Microsoft support handbook:
-small problem -> reboot
-medium problem -> reinstall
-big problem -> upgrade
This solves 85% of the problems. For the remaining 15%, blame the antivirus and/or the user.
lucm, indeed.
I'm using Dalvek
Some drink at the fountain of knowledge. Others just gargle.
Java already had the capability. The javax.script package is from 1.6
Nashorn is just a newer, faster Rhino.
It has sucked so much lately, with so many security issues, that anything that requires Java has been replaced with something more modern. Just say no to Java!
bitwise access to char buffers
What exactly would you like to achieve with this? A stream reader that converts ASCII to EBCDIC on the fly? A XMLReader that takes an EDI payload as a parameter?
Please give some details. Unless you're trying to show off like a Radio Shack employee complaining that iPads have no serial ports.
lucm, indeed.
"Sort of." Java 8 added unsigned integer arithmetic methods to Integer. Examples: compareUnsigned, divideUnsigned, parseUnsignedInt, remainderUnsigned, toUnsignedLong, etc. You still use long and int, and they still have the capability to store signed values. However, if you want, you only use them for unsigned values and with the Unsigned methods.
I don't think it's a "glaring omission." Life is quite difficult without signed integers -- you've really got to have those. Signed integers (of sufficient width) can functionally do everything unsigned integers can do. (What *functionality* are you missing?) If you have both signed and unsigned integers then you've got to have facilities for typecasting, and that has proven to be at least complicated enough. I think the reason unsigned integer data types were created in other languages has much more to do with the "every bit is precious" constraints in the formative years of those languages and their ancestors. They didn't want to "spend" a precious bit on a sign for every integer, hence the unsigned integer data type. Well, the 1990s (and even 1980s) came calling, with 32-bit and 64-bit addressable memory, and we don't have to be quite so bit thrifty. Every integer can have its sign, even if we never need it.
Signed strings and characters in Java were probably a mistake, though.
There is a need for a light weight, garbage collected language with static typing an efficient compilation, but it does not exist. So Java it is.
Exactly. However, Java is pretty damn lightweight and efficient nowadays -- a heck of a lot less heavy than many alternatives. Partly that's because hardware improved, but mostly it's because several Java implementations have improved tremendously over the circa two decades and counting of Java's history. So, for example, Java is a mandatory part of the Blu-ray standards on ~$50 video players. And Google's Android Runtime (ART), another implementation of Java technology, is the world's most popular smartphone platform. On the server side there are extremely fast starting, lightweight, lower memory runtimes such as IBM's WebSphere Liberty Profile. The traditional efficiency rap against Java doesn't apply any more. "Back in the day" people complained about COBOL because it was "too slow" compared to that (allegedly) hand tuned Assembler code they weren't actually writing. Well, for several years, they had a point. By about the 1970s they didn't. Hardware improved, and the compilers got a lot better -- and that process continues, also for COBOL. Java used to be slow, sure...but what's that in your hand and on your wrist now? (And color TV used to suck, and car tires used to blow out at the first pothole....)
Another huge point in Java's (and for that matter COBOL's) favor is that it's a durable programming language. The invested value in Java code, and the ability to draw from that code portfolio to solve problems, is utterly massive. It's so massive that the Java programming language has crossed over into IT immortality along with only a very few other programming languages (FORTRAN, C, C++, and probably PL/I). Also, Java is the most demonstrably portable programming language (and compilation/runtime path) we have. (Any other nominees?) It's not at all hard to write functionally portable Java code that'll run, unmodified, on platforms ranging from Android smartwatches to z/OS mainframes. That's the default, and it really does work. High quality, performance-optimized and/or battery-optimized code is always a separate question. Any programmer can write lousy code in efficiency terms, and most do at least for Version 1.
That it is still controlled by Oracle.
“Common sense is not so common.” — Voltaire
Contrary to what Oracle's marketing dept says, in the real world even C is more portable.
C runs on many platforms and environments. But Java tends to only run on one environment: the JVM.
Some clever folks know how to port the JVM to run on top of lots of platforms, but JVMs are usually written in C or C++. The Java apps themselves are still targeting a single universal environment.
“Common sense is not so common.” — Voltaire
If Java is so great... why Mozilla and almost any sane browser ask us to not run anything based on it and block the plug-in?
Because the browser plug-in security model was/is fundamentally broken. Browser vendors are discontinuing that plug-in model for every plug-in. If you want to continue running PC client side Java applications then you'll be moving to something called Java Web Start. JWS is a different, more secure way to launch those applications. Meanwhile, the Web sites you visit are often running lots of Java code to generate the content your Web browser displays. And if you're browsing the Web from an Android device (far more numerous than PCs) then most of the apps you run are written in Java. There's more Java than ever, but the ways and places Java runs are changing and multiplying.
RGBA channels for image processing... access to thousands of protocols with bit-packed fields... You know, extraordinarily common computer stuff.
Is that what constitutes showing off in your mind? Wanting a saw that can cut at the intervals you might need? I mean, gosh ... how elitist.
Christ - look at me, acting like a big-shot and wanting to manipulate data. I bet you take your data the exactly the way it comes and just shrug helplessly. That's what external libraries are for, right?
Probably utter a little defense of Java and then blame the data for being "unfriendly".
At least you're humble tho.
Please stop programming in JAVA. It does not work, it is extremely buggy, there is a patch almost everyday and that patch breaks everything that is working, requiring hundreds of hours rolling back patches and/or begging developers to update their software. Can we please just get a way from this forever!!!
My favorite Java 8 feature is that wonderful Ask Toolbar! You like type words into it and it finds stuff that actually has those words! It's like a personal librarian ... well, with ads glued to her ass.
Table-ized A.I.
...
-pyrrho
I tend to chase the latest trending technologies...they pay more and are more fun. Also, anyone who has been following Oracle lately knows they are circling the drain. There is a huge code base written in Java, but i get the feeling it'll be the next Cobol. Whether that is a good thing or a bad thing will depend on how the market plays out.
Now for the bad points:
1: Java is a different language, bytecode, and VM. Essentially causing performance loss (there is a reason why applets are not used.) This is evident in Android and why it needs ever larger CPUs, while Objective-C can run faster on custom ARM chips, as it doesn't need a layer of translations.
2: Java application containers are ass. Bog knows how many times I've had to restart Tomcat, clean up after WebLogic's temp files, or otherwise deal with the memory leaks and slowdowns... all on production critical machines. Java is a point of failure, and would have caused production downtime were it not for load balancers.
3: Java doesn't run the same on different platforms. The write once, run anywhere dream doesn't happen. I learned that the hard way.
4: Java is VERY finicky on what JVM, and what version of the JVM. I have had to make virtual machines for the sole purpose of having one JVM accessible so I can use applets on an appliance or an application. Contrast this to .NET which just runs, no issues, be it on XP or Windows Server 2016 betas.
tl;dr, Java had a lot of promise, but it tends to require constant admin attention. I wish it could be punted from the enterprise for good.
JavaScript seems like an extraordinarily bad choice for a customer-scripting language. I like JavaScript, but it has way too many dark corners to push it as a language for people with limited coding experience. This is what a language like BASIC was built for.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
I don't have to scrounge around for Base64 anymore.
If Java is good for GUIs, how come every GUI java program has a frustrating GUI that doesn't follow any OS settings, and needs special workarounds at the window manager level just to get focus when it has focus, and not when it doesn't - and those workarounds become different for every new Java version?
Streams were the best surprise when I had to work with Java a couple of months ago after years of other languages. They are good but it's still the worst language with that kind of functionality. I could write in 5 lines what would have taken me a page of code, but it's still a one liner in Ruby or Python. Too much boilerplate, as usual for Java. The problem is that it can't be helped given the nature of the language. Faulty original design.
Garbage collection isn't RAII. It's OK for RAM allocations but useless for everything else. In Java you still have to remember to "free" all your non-RAM resources manually. Every time.
It's true of a lot of things in Java - retype all that boilerplate code over and over and over again.
Given the choice? I'll take reference counting thanks. It's not really much of a problem in practice and it works consistently for _every_ type of resource.
.
No sig today...
+1 Informative.
If Java was originally designed for UIs then how come every single Java program in the world has a crappy, slow, inconsistent UI?
Where are the major Java desktop apps? Or even the minor ones?
No sig today...
Java8 has a much more streamlined uninstall routine.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
How did an article attempting to praise Java made it to Slashdot. We may not be great fun at parties. We may live in basements. But one thing we do know is our programming languages enough to dislike Java on grounds of its excessively verbose, bureaucratic style, its bloated feel, its appeal to people wearing suits, and its general mediocre feel. Anyone who has hacked Haskell, Lisp, Perl, Ruby, Rust or a number of great programming languages out there knows that Java is just not fun. Go, C++ and JavaScript can all sit next to Java in the mediocre languages bench.
Unless you like staying up all night tracking down errors in pointer arithmetic.
If you're doing pointer arithmetic in C++ then you might actually be writing C.
(Which was obvious from the moment you used "C/C++" in a sentence ... C++ is about as similar to C as Java is)
No sig today...
Exactly. However, Java is pretty damn lightweight and efficient nowadays -- a heck of a lot less heavy than many alternatives.
People have been saying that since before Hotspot - 20 years ago.
Repeating something often enough doesn't make it true.
No sig today...
Seriously if you check the details how TIOBE calculates the popularity of languages. It's like I search for Swift, and count in all Taylor Swift occurences. I guess they are missing a space after Java, so they also count all Javascript occurences. I mean the link https://www.livecoding.tv/ shows like 20k videos for Java (which exists over 10 years) and 40k for JavaScript, and 10k for Swift .. go figure.
Just because people have Java installed, doesn't mean they use it, take a look at Debian users for example:
https://qa.debian.org/popcon-g...
Around 15000 installations, but recently used not even 150, not even 1 %!!!!
Use Java and restart often.
You're kidding, right? Restart often? Like, the whole machine, or just the JVM? What class of problem admits restarting often as part of a viable solution?
We're reading an article called "What are your favorite features in version 8 of a language that's already had over 100 updates". 100 updates just in version 8. That's a whole language update nearly every week since it was released, mostly for gaping security holes that could take down the entire system if you don't update.
Version 7 had 111 updates before it was retired.
Version 6 had 121...
Over 330 updates to apply in recent history ... which part of "restart often" are you failing to understand?
No sig today...
From my own empirical evidence, the best feature of J8 seems to be that no one wants to use it.
C/C++ was a joke when first produced long ago. Archaic technology obsolete before it was produced.
JavaScript/Python etc. No static typing. Great until you get over 1000 lines of code. Also, Java compiles to binary, runs as fast (sometimes faster) than C. .Net. Technically better than Java in every way ... as long as you like windows.
And they all run on platforms written in C and/or C++.
There is a need for a light weight, garbage collected language with static typing an efficient compilation, but it does not exist. So Java it is.
And the JVM is written in C and C++.
Unless you like staying up all night tracking down errors in pointer arithmetic.
Those of us who are better programmers than you? The ones who wrote the platforms your crap runs on?
We don't make those mistakes.
The entire foundation of what you do is written in C and C++, something you've admitted you're not competent enough to do well.
Lambda expressions: A total brainfart. Lambda notation has no place in an imperative language; mixing paradigms is confusing for the vast majority of Java programmers. Most people just use lambdas as "magic syntax" to simplify things like declaring event handlers. The ugly syntax is a problem, but lambdas are the wrong solution.
Date/time APIs: Yes, finally!
JavaFX: Oddly, the best feature of Java 8 isn't even mentioned in TFA. JavaFX is immensely better than Swing, in every possible way: it looks better, it works more reliably, and it's easier to program.
And the worst feature of Java 8 is the unnecessary complexity throughout the new features. Two examples:
- The Optional class. Instead of checking directly for a null result, you have to unpack every result out of this idiotic wrapper.
- Factory methods instead of constructors. Java is supposed to be an object-oriented language. In OO, you create an instance of a class with a constructor, which has the name of the class. But not in Java 8, no, instead you use a whole stable of factory methods with all sorts of weird names. Look at the new date/time classes for an example.
Enjoy life! This is not a dress rehearsal.
Non-trivial C or C++ software is always littered with #ifdefs and other conditional tests throughout its build system and source to make it work across systems. For example SQLite3 has over 2000 #ifdef, #if, #else clauses in its source code to deal with various platform, compiler, debug configurations. And that's just a small library.
By and large Java DOES run anywhere. It is quite common for developers to write and test Java code on a PC workstation and deploy the same .jar / .war / .ear file to servers running Linux, Solaris or something else. The main reason this might not work is when the Java has JNI or some OS dependency that breaks this portability (e.g. SWT or JOGL). But most code has no such problem. And this is why Java is the prevalent language it is.
True. The upgrades and improvements in HotSpot is what make it true.
Who said it was? Don't they teach the legal concept of defenses at DeVry?
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Repeating something often enough doesn't make it true.
Rather the point! The fact is that the Java programming language and runtimes, today, utterly dominate Blu-ray disc players, Android smartwatches, and Android smartphones, to pick some examples. (And what examples they are!) They're powerful evidence that Java hardware and software efficiencies have improved tremendously over two decades. Java is a raging market success, including on devices that cannot afford much inefficiency. It's reasonable and rational to mark-to-market dated views of Java's hardware and software performance attributes. The successful, high efficiency use cases are staring us in the face, literally.
Of course it is still quite possible (a) to write lousy code that the toolchain and runtime, for any language, cannot performance-fix sufficiently for your intended use cases; (b) to have certain scenarios where Java and its toolchain/runtime (for a particular implementation at a particular moment in time) do not produce the very highest efficiency/performance result technically achievable. Point (a) is always true (although a richer and deeper toolchain, and associated skills, can help a lot), and point (b) simply means that you toss efficiency/performance into your calculus with the relative importance it merits for your particular needs. There are other programming languages (and associated runtimes) available, including five durable ones: COBOL, FORTRAN, C, C++, and PL/I. Plus myriad not-yet-durable (and most never will be) options. (Pascal, Ada, ALGOL.... IT history is littered with them.)
Exactly what I was going to say. Java is good at cross-platform GUIs if your idea of a good cross-platform GUI is one that looks and feels the same on all platforms. A good GUI, however, is one that integrates with the host platform and matches all of the platform's human interface guidelines. Java GUIs don't do this. AWT aimed to, but it was deprecated in favour of Swing. Swing implements everything in Java, with pluggable looks and feels, but the looks and feels never quite match the platform. SWT thinly wraps the host windowing toolkit and works fine as long as your host system is win32, otherwise it has a bunch of impedance mismatches and ends up leaking CPU.
I am TheRaven on Soylent News
Because Java is great, but Java in the browser sucks.
For garbage collectors, I'll agree (as long as, by Java, you mean MMTk on Jikes RVM and not OpenJDK). For JITs... no. CoreCLR is a lot nicer. It supports nested JITs with fallback, so you can add a new JIT easily and have it bail to another one when it can't handle a particular construct. This makes incremental development and research prototypes that focus on a specific area both a lot easier than anything I've seen in a JVM. Modifying the Jikes RVM JIT is horrible (actually, the Jikes RVM code in general is fragile and flakey - MMTk isn't actually good, it's just that it doesn't really have any less-buggy competition).
I am TheRaven on Soylent News
Ugh, are you sure you didn't post this 15 years ago? Swing and SWT have always struck me as a means to create a lot of work for no real platform advantage. If you had some kind of bizarre love for C++, you could just use Qt and be done with it. Hell, when it comes to web development and GWT, those devs bailed and built Angular.js, probably because it tried too hard to abstract away all the fantastic stuff you get using web frontend frameworks. Yes, you can use Struts 2 or JSTL, but by that point, you've pretty much eliminated Java from the whole GUI layer and instead cordoned it off into being your server model and business logic. Data Processing with C++? Java actually does a fantastic job of interconnecting to data sources through jdbc and tools built on top of that. There are plenty of great free libraries for reading/writing loading information. Still, it's not going to shine like something you might see from R or SAS. Restart often with Java? The code is broken. Horrible performance and footprint problems? The code is broken. Find some smarter programmers to lead and gatekeep development. Too many cycles? Developers are rolling Virtual Machines on cloud metal that have lesser virtual machine docker instances which might contain java virtual machines, which actually do a better job at managing memory resources than their parent containers. Java 9 is actually sounding like it will be even be more superior in this kind of application space.
Java can be used well or poorly in pretty much anything. There are specific cases where it's less applicable to more native solutions. There are also a ton of libraries and frameworks within and built primarily for Java. The quality of the frameworks you choose at that level will have more bearing on how well Java does for your use case than simply looking at "Java" or "JEE". Spring is fantastic.
There are some nice skins for Swing and it generally works quite well when used right. Sure it does not look native, then again have you seen how often Microsoft switched out its "native" look since Java was first written?
My C++ app has changed its appearance to match Microsoft's UI changes and I haven't touched a thing in the code since about 2002.
No, it isn't using MFC or whatever the hell's fashionable these days. It just calls "DrawThemeBackground()", etc., in the Windows theme API.
My app runs on X11 and Linux, too. Is there a reason why Java can't do that?
And why can't Java restore a fullscreen window's position when you close/restore an application? It's been 25 years now, has nobody read the documentation for "GetWindowPlacement()"?
No sig today...
Not specific to 8, but I just like the huge number of libraries at your disposal, maven/gradle make for great dependency management tools (in fact I don't think C/C++ even have something remotely similar), and Spring just helps you write even less code than you did before. The thing I love most about the JVM is that you don't have to write Java code for it. You can even make an unholy mix of Java, Scala, Kotlyn, Groovy etc.
You can't have a serious, binary network protocol aware language, and not have unsigned integers.
Religion is what happens when nature strikes and groupthink goes wrong.
Nope. Unsigned integers have everything to do with (at least) two things that I can think of:
- expression. It is non sensical to have an array of size -3, for example. In a language like Java, one would ideally even forbid to use array indexes from being negative. An unsigned type gives you this facility out of the box.
- network protocols. When you interact with other languages over a network, you want to be able to convey naturally, an unsigned type. If I have a protocol that conveys 8-bit flags, I want to suck those up inside an unsigned 8-bit type. Not a 16-bit type of which the 15-th bit is a sign.
Religion is what happens when nature strikes and groupthink goes wrong.
Who is this authority that declares what a good GUI is for the rest of us? I rather like an application that is the same everywhere, on Mac, Win and Linux, and I don't have to learn the nuances of a new system. Also, I think only Mac is different, 99% of all computers are the same, 3 mouse button, wheel, menu, buttons, etc.
You have NIO in Java. https://docs.oracle.com/javase... As for protocols, I would rather use NIO or a library. The cases of unsigned types are really small, so the Java devs made a choice to reduce program bugs by having only signed types.
I'm old enough to have programmed in COBOL, and Java is the COBOL of the 1990s, bloated and ugly. The licensing is 'murky' and therefore subject to the current Google/Oracle 'discussions' and probably more of the same later.
However, as a Perl person and increasingly a Python person who 'sometimes' does Java, it makes both look good. I'm expecting some flaming for the mention of Perl, but, when you're used to it, it's nifty, just over-comment. Admittedly APL was probably 'too' expressive, but Java makes one die of boredom before the first finger hits the keyboard.
On y va, qui mal y pense!
On GUI/Web, if you mean it's 'good enough', fine, but if you are claiming it is advantaged, it really isn't. Particularly on the Web side, Java really doesn't do *anything* for you GUI wise, it's just beyond the scope (unless you are saying applets, which no sane person would start new and in fact getting an applet to run in a modern browser is insanity). If you refer to Java webstart, for just make your app run in the browser already and not subject the users to the pain in the ass that is making sure javaws runs right.
On cross platform, nowadays it is extremely easy to have a write once, build everywhere. Now if you think the 'build once, run anywhere' is significant, then your build system isn't adequate and your users' lives are made more complex because they suddenly need to understand how to launch a jar, which is somewhat unnatural for all the platforms.
Basically, Java is the right choice when your developers happen to be experienced in Java. However you still need to make platform specific builds to abstract the java-ness (e.g. user downloads an '.exe' rather than a .jar') and your users will be pissed if you deliver your 'webapp' as a jnlp.
XML is like violence. If it doesn't solve the problem, use more.
No static typing. Great until you get over 1000 lines of code.
If you are saying it is a code maintenance nightmare, then whether it is typed or not, your code must be spaghetti code if the overall line count significantly impacts your variables. Even in a complex project, things should be nicely scoped so that readability is preserved enough that lines of code does not impact whether static typing is a good idea or not. That's not to say it is not a good idea, just that the good idea is pretty constant whether the project is small or large.
Also, Java compiles to some abstracted bytecode. This is the case for pretty much all interpreted languages (just the compile step happens on 'load', and many languages make effort to cache that). Performance is governed by the quality of the runtime, and yese the JRE is one of the better language runtimes, though Javascript has had a *lot* of similar work, but the language is limited. Ruby, Perl, and Python do have runtimes that are far behind the JRE, but at this point more to do with relative investment in the runtimes than things enabled by the language (though yes there is a difference by having things like static typing, it's tiny compared to general optimization potential).
XML is like violence. If it doesn't solve the problem, use more.
Dude, user interfaces has got to be the weak point of Java by far. Pretty much everything everybody abhors from the language comes from using slow and heavy software like Limewire, Java IDEs, the dreaded applet loading and crashing or slowing down everything. It provided a somewhat ok video player when there was none for the web, but was quickly replaced with Flash because Java is and will always be a hassle for the desktop. Oh don't forget the constant Java update prompts. With C++ if you shipped an old version of MFC, that was it, wait for a next release if you want to use the updated one, but you really don't want to bother your users with your scaffolding.
Now, the thing is from a technical point of view, Java is beautiful, very correct, even if verbose and restrictive in some areas. So for web backend, Android (not like you really have another choice), and non real-time systems, do use it. But please people, stop using Java for user interfaces other than Android. I can imagine that something like IntelliJ would be twice as succesful or taken the crown out of Visual Studio a long time ago if it was done in C++ instead of Java. Look at something like SublimeText for things that are a speed demon, small and lean that will never be possible to achieve in Java IMHO.
I do not have to work with it.
Windows, Linux and Mac are different enough. Windows leans more on the 2 mouse button plus wheel, Linux you really get to use that third button a lot more for pasting, and Mac you can work with a one mouse button. So no, they are not the same by a long shot, and it is not only look and feel. There is a reason why brew exists for the mac or MinGW for Windows.
A good GUI is one that follows the OS provider human interface guidelines so that the user does not have to relearn how to use a scrollbar, text box, etc every time they want to use a new program. Unless you have a very specialized program like AutoCAD or 3dsmax, it makes no sense to build a custom GUI.
That’s funny, although unless you’re bumping up against your VM memory limit, it’s not such a problem. When you DO approach your memory limit, performance drops to a crawl. In the 32-bit days, I hated the fact that my colleagues in AI developed in Java instead of C++ for programs that worked on really huge datasets just because of this issue. The programs would be frozen on GC for as much time as they did computation. That doesn’t mean I hate Java; I really like it, but this was the wrong time to use it.
But a bigger problem is that Java VMs are memory-hungry. After a little while, a long-running Java app has grown to its maximum size and stays there tying up system resources that it’s not really using. This can happen in C too, but with Java, you can’t avoid allocating and freeing objects constantly, while you can keep memory allocation well under control in C/C++, keeping your process size small. You can’t keep your Java process size small AND have good performance.
BTW, despite this, I do all kinds of work in Java. Mostly server stuff and some swing. When I need speed, I use C and/or C++. When I want to do something like string processing or just want to hack together a one-off, I use Ruby. When I want to do symbolic math, I am forced to use Python (a language whose syntax I object to on moral grounds) because sympy is the awesomest thing ever.
My FAVORITE language? Probably Verilog. I’m a chip designer, so you can just assume that any piddling arguments you have over programming languages will just make me roll my eyes over how trivial the differences are. That’s like watching a Lutheran and a Methodist try to argue over the infinitessimally trivial differences in their religions. Just to piss people off for fun, I’m going to say that software languages (except maybe Haskell, which is scary for other reasons) are these arbitrary constructions that people argue about like religions. On the other hand, Verilog is grounded in reality and science; it has some rough edges too, but that is the way of science. (Our VHDL bretheren fully recognize that the two languages ultimately have the same semantics.)
Java is a big deal in the world of finance and banking for backend server applications.. We used to use Java for the backend and middle ware and .net for all UI requirements.
...in Scala
Is that a ding I hear? GET BACK IN THE MAGIC HOUSE!!!
It's by far the best platform for those researching JIT compilation
Why not Smalltalk? It doesn't cheat with primitive types or limit you with a rigid object system. Quite a bit more interesting for researching what can be done about JIT compilation of more complex code IMO.
Like you'd want to do research with Python or something?
PyPy people have apparently done quite a bit of research with Python.
Ezekiel 23:20
Idiots sue people they think they can get money from without just cause all the time... that doesn't mean they are going to win. If anything, this case gives precedent that fair use *IS* a legitimate defense to using an API, and when that defense is presented, an accuser is going to have to be prepared to show exactly why that defense shouldn't apply if they are going to have any significant hope of winning. Yeah, you'd have to go to court to defend yourself in the worst case, but given the circumstances, I'd think that would be about the same situation as X suing Y because Y was doing something X didn't like but wasn't actually illegal or causing any kind of real or financial harm to X. There isn't really a whole lot that Y can do to avoid being sued if X is feeling litigious anyways.
File under 'M' for 'Manic ranting'
Honestly people are using Python and Perl for data processing. Compared to those things it is a great choice. There are arguments that developer time is more valuable than machine time so CTO's would rather buy more web servers than suffer even the time to write things in Java. You could write the same thing in C++ of course but you are more likely to have memory leaks, and you may spend time re-inventing the wheel.
Restart often is not really a usual Java thing. Additionally Java has a very convenient threading model which works pretty well for using multi-core processors and there are tons and tons of distributed system computing libraries/systems. Hadoop is Java, Cassandra is Java these are two examples of massively parallel projects.
It is true C++ is faster than Java but mostly I would say they are in a similar tier and Java has advantages in simplicity and available libraries. It does seem that for real time systems Java is not the best choice. Though some people do make them anyway with different custom garbage collectors. Not sure how I feel since even in C real time systems often do different things like avoiding malloc and many other unknown performant system calls.
Still it is not C++ that is the usual alternative to Java, it is Ruby on Rails, Node.JS, Python, Perl, C#, etc...
My favorite feature is being able to write:
private static final long serialVersionUID = 2016_08_31_001L;
Or being able to write this on Raspberry Pi code . . .
private static final int mask = 0b0001011;
I'll see your senator, and I'll raise you two judges.
Java is a good choice for bosses who are still stuck on decade old buzzwords and you don't want to use .NET.
Because of that it is a language known by a lot of people and schools teach it as part of the Computer Science Program. So it is easier to find people with that set of skills for larger projects taking a team of developers.
In the 1980's we had COBOL -- Built mainly for mainframes and filling out forms data and parsing fixed sized files (often compatible with magnetic tape)
In the 1990's we moved to C/C++/Visual Basic -- We moved to the slower PC hardware so we needed the Speed of C/C++ and/or the ability to handle he new GUI capabilities that VB offered.
In the 2000's we moved to Java/.NET -- Finding that are gping to be moving from 32bit to 64bit computing also dealing with many rough OS upgrades the bytecode languages offered easier migrations. Here is Java Strongest point, because compared to .NET you could actually make cross compatible products.
In the 2010's we are moving towards JavaScript/Python/Ruby -- As our personal devices are getting smaller at the expense of performance we are moving towards cloud based solutions so we emphasising more on Web Technologies and Server hosted processing.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
Infoworld has done better articles on the topic. A little dated (2010... Applets? Flash?), but still fun:
I rather like an application that is the same everywhere, on Mac, Win and Linux, and I don't have to learn the nuances of a new system.
That absolutely makes sense for people who use multiple operating systems regularly and rely heavily on one application across those platforms.
Most people, however, use just one operating system and are used to how the OS works, not a specific application. For them, making them adapt to a different interface every time they run just one specific application is counterproductive.
So what's Java good for? User interfaces (GUI, WEB you name it) it's great. Need it OS independent? Use Java.
I've used (or attempted to use) Java for user interfaces. I'm surprised you even mentioned that, it's the worst possible choice - even with the many attempts at providing a library (Struts, Spring, various desktop libraries, etc.). Do yourself a favor and learn Node.js
OS independent for web programming? Nope, put it on Linux, there's really no other choice (well, Windows .Net is pretty good if you really want to use MS as a server). I've never found Java useful for desktop apps on any platform.
Use Java and restart often.
You're kidding, right? Restart often? Like, the whole machine, or just the JVM? What class of problem admits restarting often as part of a viable solution?
I am not kidding at all. It is standard practice to kill and restart Java processes in high availability systems, in fact, it's a good idea to actually PLAN to do this. Sometimes it is the only way to fix specific problems which are quite difficult (or impossible) to find and fix programmatically.
Shesh, Sometimes I wonder why folks don't get this, until I remember that there is a whole generation of programmers who only know java and have never had to deal with memory and threading issues directly. They don't understand what the JVM has to do to keep the magic happening.... So they don't understand why I, the moldy old guy who's doing this since Java was developed by Sun, make them do things before I will allow them to field that nifty Java based system of theirs...
"File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
Actually, my thought was "user interface" kinds of things where the response time is not a big factor, where a fraction of a second difference doesn't really matter. This includes GUI's, CGI, and other User Interface applications. If you have to do interfaces on multiple Operating Systems, Java is great..... However...
Java suffers from having to do garbage collection and a lot of house keeping that makes the response time of the program to vary greatly from one invocation to the next. The longer you keep the JVM process running, the more variance you will likely see. If your application can stand this, Java is an option for you, otherwise, stick with something else..
"File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
Fast response is crucial for a good GUI.
https://www.nngroup.com/articl...
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Not really... Unless your program is REALLY slow.... But your definition of "slow" does depend greatly on your fame of reference.... If you are writing a device driver, milliseconds count... In a user interface, the differences between 1/4 of a second and 1/8 of a second will be hardly noticeable...
It's not until you start having delays beyond about half a second will users really care. Half of a second is a LONG time in terms of what a CPU, memory and disks can do, but it's just about a blink of an eye for the user.
Java, with it's garbage collection causing huge delays (from the perspective of the machine) that you cannot stop mid stream, introduces slight delays here and there. These are not a problem for a user interface, but they'd cause havoc for a device driver, where your response time budgets are significantly shorter than what you need when responding to a mouse click or key press by a user.
"File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
I really liked the random unckecking of the "Supress sponsor offers when installing or updating Java" check box in the Java Control Panel after you do updates or before you do the next update (Windows releases). That was definitely my favorite little hidden feature.
Yes, I'm being a smartass, and yes, I'm serious, but not in a good way.
Why do you say 'Jave' when you mean 'incompetent Programmer' is beyond me.
The things you mention are not Java problems or problems of the Java library.
A window 'programmed' in Java just goes full-screen and back to its original sizes, just like any other window ... no idea what you are talking about.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
Fair Use is what's called an "affirmative defense". That means the only way to get out of a copyright claim by Fair Use is to *go* *to* *trial* and convince a judge or a jury to agree that you didn't copy to much of the origina
Of course. But then again, you can sue whether or not you have a case.
If Corporation X crunches the numbers and realizes that their case would be tossed out on fair use grounds, then they're a lot less likely to spend the money on a lawsuit in the first place.
Yep, I have ~25 years in this business.. Started coding in C, back when folks berated it for being to uppity, slow and a resource hog by the assembly guys.
"File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
Why not Smalltalk? It doesn't cheat with primitive types or limit you with a rigid object system.
Strong types (and unboxed types) are one of the things that make a garbage collector interesting. For example, if you can prove at compile time that a certain object never points to cycles (which you can often determine from type information alone), that translates to real performance gains in practice.
PyPy people have apparently done quite a bit of research with Python.
I'll never understand some people.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
How vague... Like what, exactly?
File under 'M' for 'Manic ranting'
Uh, no. 1.2, at least.
Seriously... 1.0 was broken in so many ways that it's not funny.
And I'd say it took them until 1.4 or so to get to a point of being possible to be productive with at scales that were practical for anything of significant size. The difference between 1.4 and 1.3 was astounding, and the differences I noticed in usability at my job at the time led to me choosing Java primarily for my own projects as well, and it remained a language favorite of mine for years.
The biggest reason I don't use it as much any more is because I don't have as much time to do coding on my own time as I used to, and my current job doesn't require it.
File under 'M' for 'Manic ranting'
Java doesn't technically have POD anything... while things like int and float and double, etc, do conveniently map to specific POD data types, that is really just an artifact of how it is often implemented, and not really meant to be the way that one thinks of that data abstractly.
File under 'M' for 'Manic ranting'
What do you use for continuous integration? And what language is it written in? And how does that language make it better than Jenkins?
- I don't need to go outside, my CRT tan'll do me just fine.
You know, if you're going to reply to a post, it might be a good idea to read it all of the way to the end.
I am TheRaven on Soylent News
It is standard practice to kill and restart Java processes in high availability systems
As someone who works solely on HA systems, I can assure you that this is not a standard practice. It is in fact the opposite of what 'HA' means and would be considered an unacceptable showstopper in any project. Our server platform consists of Java, C++, Fortran and AIMMS, and out of all these the only components which require a separate daemon to monitor their status / restart on failure are the C++ ones. This is not a negative commentary on C++, merely a byproduct of the higher bar of code quality required to achieve graceful fault handling in that language. The Java components running out of containers never need to come down unless they have an actual memory/resource leak induced by the code, something so ridiculously easy to spot and and address it would never have made it past round 1 of QA. Perhaps you meant 'It is standard practice to kill and restart poorly written processes of any language in high availability systems', but you would still be wrong because if you have such components you do not have an HA system.
Sometimes it is the only way to fix specific problems which are quite difficult (or impossible) to find and fix programmatically.
Complete nonsense. Aside from the fact that I can use a debugger, profiler, JMX console and heap/thread dumps to diagnose literally any problem on a live Java process, if a developer ever said the above to me they would be immediately reassigned to intern-level shitwork and fired at the nearest opportunity. 'bounce it once in a while' is an utterly unacceptable solution in HA regardless of language.
They don't understand what the JVM has to do to keep the magic happening
I don't think you do either. You seem to think that there is something about the JVM that inherently leads to long uptime issues. This is a function of bad code, not the language in which it was poorly written or the container under which it is executing. Profiling Java applications for deviations in resource usage / behavior is so easy that we had an intern set it up as an automated post-build step using only tools that come standard with the JDK, It took her about a week. There are some valid criticisms of the mis-use of Java (or any language for that matter), but your whole stability argument here is just completely bogus.
Why do you want to an unsigned 8-bit type to contain an 8-bit flag? That's not natural! And what if you only have 3 things you need to flag? Shouldn't the language also give you a 3-bit flag type? In other words, if you need to manipulate bits, you are no longer working on the level of integers, and signedness really doesn't matter anymore. There are 8 bits, and when each bit has its own meaning in your network protocol, why do you care what the meaning of the 8th bit used to be? It's now EVIL_BIT, no longer 'positive', or '128'. Java gives you access to those bits in the usual formats: 8, 16, 32 and 64 bits.