Java 1.4.1 has recently been released. Over 2,000 bug fixes have been issued in this maintence release. Two new garbage collectors have been added, Concurrent and Parallel. Click here for more information while you can also find the the full
list of changes.
It says “Java 1.4.1 FCS”. What does “FCS” mean? I can’t find it anywhere on the site.
http://search.java.sun.com/search/java/?qt=FCS&Search.x=44&Search.y…
http://java.sun.com/products/jdk/rmi/archives/1216.html
i can see lots of bug fixes. very few ‘new’ features… i think 1.5 (tiger) will be the big release for java, especially for people writing desktop apps. with the promise of memory sharing between multiple vm’s, java could finally start to find a serious place on my computer (in terms of actually using java software)…. until i upgraded to 512mb, using jedit, ant+javac, plus running the software i was developing was a serious drag…. (swap swap swap)
i guess i’ll just have to look forward to next spring .. sigh..
Only this memory sharing was a release driver
for version 1.4. I hate it when Swing is loaded
and compiled anew when I start a second app.
Also I still cannot do serious math without struct
types and operator oveloading. C# is getting this
right.
both of these are left out of java for obvious reasons, and will hopefully never be put into java. java is getting this right
seriously though, i can’t think of any functionallity that is lost by the fact those two “features” are dropped..
Uhhhg. Operator overloading are ugly!
I write game and operator overloading goes a long way to making complex alogrithm more readable. This is a good thing. Of course they can be ugly but anything can be used in the wrong way.
Complex a= new Complex(1, 2);
Complex b= new Complex(3, 4);
Complex c= a.multiply(b).add(new Complex(5, 6));
is slightly less readable than:
Complex a(1, 2), b(3, 4);
Complex c= a*b+ Complex(5, 6);
And this is just a trivial example.
Also think about what is happening on the heap
and take cache consistency into consideration.
Java is totally unuseable for anything involving
math.
C# allows operator overloading only for struct types.
This is quiete an excellent solution.
I am 100 percent on Java’s side, that Operator Overloading should be banned. You can do everything you can do with using operator overloading without using it. You will loose some readibility, but, you will gain much especially in big projects. Operator overloading leads to very hard to determine bugs in the big projects since different semantics may be bound to same structural type operator. I had a very bad experience from my C++ days. Better not to have operator overloading at all.
I will never use C# I guess, since I can do whatever I want using Java, and I can run my programs on many platforms without changing single line of code.
By the way, 1.4.1 is a great release! New garbage collectors work very nice! I noted super performance leaps in many server side programs. Kudos to Sun.
C# would be brought up. I’m predicting a .NET vs Java flamewar. And that flamewar isn’t as fun as the Mac vs. PC ones 🙁
It depends on tast Jeti. When you get used to creating objects, the Java way is more readable. I completely agree that operator overloading is a very bad thing.
It should be possible to write a preprocessor that allows operator overloading, preprocessing into normal method calls.
>is slightly less readable than:
Not to me.
But I can’t do everything I want in Java.
I can’t do efficient image processing
without unsigned bytes.
The complex numerical algorithms I need
for pattern recognition are slow and hard
to implement in Java (no operators, working
on heap, bad cache consistency).
The math packages available for C# are already
more numerous and of higher quality than the
ones for Java.
I didn’t want to start a flamewar. But I’ve been
using Java intensively and I’m quite disappointed
by the lack of progress with that platform.
(I repeat myself, but memory sharing was a release
driver for 1.4.)
Jeti, why are you using only the Java language for this? I believe that Jython (another Java Virtual Machine language) is fast for numerical things, and is also much more tweakable than C# if you want to. There is the JNumerical package for Jython.
http://jnumerical.sourceforge.net/
I’m sure Python supports operator overloading. If not, please someone correct me! Java’s builtin math libs may not be powerful, but there’s always packages like JavaNumerics. And Jython has access to them too.
http://math.nist.gov/javanumerics/
“…I still cannot do serious math without struct
types and operator oveloading. C# is getting this
right.”
What the heck…?
1) Since when are Java and C# even in the same ballpark?
2) Since when is C# the only alternative to Java?
3) Since when is *serious* math done in C# at all?
4) Do you have an idea what *serious* math is about?
Sheesh. The systems used for “serious” math don’t run C#, or Java for that matter.
But nice to see that you picked up a buzzword. Go you.
“[Normal languages] deliberately restrict the abstractive power of the language, because of the feeling that users “can’t handle” that much power. This means that there is a glass ceiling of abstraction; your designs can only get this abstract and no more. This is reassuring to Joe Average, because he knows that he isn’t going to see any code he can’t understand. It is reassuring to Joe Boss, because he knows that he can always fire you and hire another programmer to maintain and extend your code. But it is incredibly frustrating to Joe Wizard Hacker, because he knows that his design can be made N times more general and more abstract but the language forces him to do the Same Old Thing again and again.
http://www.paulgraham.com/vanlfsp.html
> Do you have an idea what *serious* math is about?
Ok. Replace serious math with non-trivial math.
There’s obviously better languages for math stuff.
All I’m saying is that using Java as a general purpose
language has been slightly frustrating to me.
Maybe I’ll have a look at Jython. But AFAIK you cannot
pass user-defined by value types using Java bytecode.
Now more than ever…
I can’t believe what I’m hearing in regards to operator overloading. Everyone is criticizing operator overloading without stating any reasons why it’s bad, other than “Operator overloading leads to very hard to determine bugs in the big projects since different semantics may be bound to same structural type operator.”
Well here, let me say why it’s bad: it has the potential for misuse/abuse. However, I don’t see that as any reason to royally screw over those of us who are writing mathematical code where operator overloading makes all kinds of sense.
To this person: “It depends on tast Jeti. When you get used to creating objects, the Java way is more readable.” I just cannot possibly believe, comprehend, or fathom a statement. It’s apparent to me you’ve never looked at a complex mathematical statement expressed in terms of method calls. It is completely unreadable.
Problems don’t stem from language features themselves, but from the programmers who abuse them. If you don’t feel up to the challenge of using operator overloading properly, that’s fine, but that’s no reason to criticize it, the failing is yours, not the language’s.
Does Java Webstart come packaged with this new release?
sites like http://www.theclickfactor.com could benefit from some re-tooling of Java Web Start and the Java Plugin to make it easier for end users to install and use.
If you don’t feel up to the challenge of using operator overloading properly, that’s fine, but that’s no reason to criticize it, the failing is yours, not the language’s.
That’s not a reasonable response, since code is read far more often than written… and it’s usually other peoples’ code. You see, big companies and even little ones often have faulty hiring practices. They don’t or can’t hire people with the best taste. That’s why Java is used. In the original mission statement, it was meant to be a language that fits mediocre programmers.
Java pisses me off every day when I want to use first-order functions. Java is evil. But it saves you from reading other peoples’ far more evil code. I’ve seen so many horrible rapes of computer science by people who, if they lived like they programmed, would starve to death. Bondage & discipline is good enough for them, and for the rest of us we have the Pizza project, various Schemes, and Jython.
Finally, a reasonable response.
-G
I pretty much agree with Robert Hanlin but I don’t entirely understand the case against operator overloading. I agree that you can write hard to understand code with poor use of operator overloading but the operator is basically just a function name.
If I want to, I can also name my add funtion ‘create’ and my multiply function ‘delete’. Considering how confusing that is I don’t understand why we allow thee mediocre programmers to give any kind of name to a function… Why not just use integers instead?
I’m actually having the “image processing in java without unsigned bytes” problem right now, by the way.
I have to second Erik on this one. Operator overloading is neither good nor evil. If you do it right, it makes your programs that much more readable. You do it wrong, and you better hope that those that come after you never find out your new address.
(I have someone in my team who insists that overloading the COMMA is A Good Thing ™… now, comma, && and || are special, at least in C++, because you *cannot* do them right… but I disgress.)
I am very happy with this release. I think Java has become increasingly quick and is very usable for my needs right now. So much for the “Java is too slow” naysayers.
To comment on some other comments, I don’t think Java is the best language for programs steeping in math either. Neither is C# (since somebody just HAD to bring it up).
I don’t understand, however, the mentality that one language has to be good for absolutely every situation. People who think along these lines are the same ones who buy things like the Ronco’s Pocket Autoshop Plus (“You’ll get all your favorite mechanic’s tools and MORE. You’ll get a screwdriver, a hydraulic jack, a socket wrench, an air compressor, an egg whip, a cobbler’s bench, and so much more, all in one handy retracting tool that will easily fit into even the tightest pocket. But that’s not all. You’ll also get a crevice scraper, a lemon zester, a winery… all for 6 easy payments of $500.00).
I have never used a language that I felt was the perfect fit in every situation. Just like you force a kitchen knife to unscrew the socket cover plate on your wall, a screwdiver is the better tool. You can make C++ parse a huge text document and extract certain information, but it will never be as effecient (either for the programmer or the task itself) at it as Perl or Python are.
So Java doesn’t suit somebody’s math needs. Big deal! Do you use a ladder to dig a trench? Why don’t you use a tool that specializes in math if Java’s generic Math libraries don’t suit your needs?
Java does what it was designed to do very well. For that I commend it and particularly this release.
convert to int and clear all high-bits.
then you have only the lowest 8 bits, unsigned.
don’t know if syntax is correct:
((int)yourByte) && 0xff
rezi
((int)yourByte) & 0xff
of course. not “&&”. now have to check how to enter hex numbers..
rezi
Come on how many security bugs due to improper operator overloading by people that are sure they did it right. Truth is operator overloading is too error prone (first one to say no probably one of the largest offenders) operator overloading should be avoided as much as possible I place it right next to goto statements as one of the worst items in progamming laguages
Whenever Opera would encounter some funked out Java-thang on a website, often it would crash. This is with 1.3.x Java.
Following a hunch, I got the latest Java from Sun.
And lo and behold, Opera doesn’t crash as often.
It encounters those J-thangs and Sun’s shitty little blue coffee cup with red steam icon appears in the task bar. But it doesn’t crash! Thank heaven for small mercies.
This latest Java has a use after all!
Notice how it comes with a debugger console built-in? And how it runs on your desktop every time you use a Java-thang? Lack of confidence, Java fan boys, is an awesome thing.
I’m sure the average web users knows they need to “finalize objects on finalization queue” every now and then. Or “garbage collect”. Or the best one. “print memory usage”. I loaded one applet and it takes 9MB of RAM. Now that’s tight code. Ooops. Not tight code. Bite code. Or is it blight code?
Eat that thang.
#m
In OSNews I have read news than imply than C# and .net is superior to Java solution.
This could be true in the Windows world, because the multiplatform nature of Java imply than you could not spin some details of your program. AWT is a very good example of this, but Swing have this feature too.
But Java is not a dead solution, the real power of Java is in:
1) Servers programming. JSP and J2EE is a good solution for high servers who execute over UNIX
2) The multiplatform world. Where you need to build a program for a lot of OSs where surely all of then have a Java Virtual Machine
Really there is the Mono project to build a CRL for C# bytecodes in the UNIX world, but they are going to have the same fine tuning problem than Java have. In fact they are only implementing the ECMA standardized portion of C#.
This fine tuning make by Microsoft in Windows is the same than this make by Apple in Mac OS X where all the Cocoa API is wrapped around Java classes. But there is the same problem, this programs are not multiplatform.
In OSNews I have read news than imply than C# and .net is superior to Java solution.
OSNews never implied C# is superior to Java, its visitors does.
Besides, on Mac OS X’s Java, applications built for Java runs really nice on Mac OS X, but it can run on any other J2SE-compatible platforms.
Also, I noticed most comments about C# as a language shows features of C#, not its implementation…
Besides, on Mac OS X’s Java, applications built for Java runs really nice on Mac OS X, but it can run on any other J2SE-compatible platforms.
Excuse me but not. A referrer to: “Mac OS X where all the Cocoa API is wrapped around Java classes.”
This class came in packages as:
import apple.cocoa.foundation.*;
And those packages are not in other platform.
Obviously, packages as javax.swing.* are in every Java virtual Machine.