Java SDK 1.5 'Tiger' Beta Finally Released
kingkola writes "Finally, after about two years of development, the Beta for Java SDK 1.5, aka Tiger, has been released. Features added in this edition include generics support, autoboxing of primitives, syntactic sugar for loops, enumerated types, variable arguments, sharing of memory between multiple VMs and a bunch of other bugfixes, enchancements, etc."
We need an ISO standard.
Link to discussion on TheServerSide.com
Why use Java in place of better known and popular languages? There's certainly no efficiency motivation; anybody who has ever programmed in a real world environment knows that Java is slow and C is fast.
So, finally Java is finally catching up to C#. Too bad Whidbey is looming ;)
Not to mention, C# is ECMA standard (ECMA-334 2nd Edition 2002), whereas Sun still keeps a tight grip on their precious IP. Anyway...
generics support
C# innovated this, and already has this in the spec
autoboxing of primitives
C# innovated this, already implemented years ago
syntactic sugar for loops
"foreach": C# innovated and already has this, implemented years ago
enumerated types
Java didn't have this before? LOL
variable arguments
C# innovated and already has this ("params array" arguments)
sharing of memory between multiple VMs
C# already has this
and a bunch of other bugfixes, enchancements
Bugfixes in a language? WTF?
Nice to have a link on the top page for old releases. To many times I have gone to the java.sun looking for some odd 1.1.4 or what ever to try and replicate some bug the user is having.
Come the revolution, the Bourgeois, Capitalistic, "A PARKING STICKER HOLDERS", will be first against the wall!
javac -source 1.5 filename
warning, goatse link in parent post
C'mon fellow slashdotters,
dont you miss the lovely prose of that great man who had his finger on the pulse of the geek nation>
I think we should all subscribe, so that Taco can hire him back and buy him a BMW
Thank you - that is all
Darn it, the Mac just got JDK version 1.4.2...
http://www.apple.com/macosx/features/java/
A friend of mine is bitching about this: if you type a list, say ArrayList, you can't use that as an argument for a function that takes a ArrayList. He's tried casting it, it just doesn't like it. Anyone else seen something like this?
I'll save you the trouble and point out that lisp had all those features years ago. /.
Did I read the documents? Of course not, but this is
Yay, finally some proper java support for IPv6 in windows. Im not an IPv6 zeaolot or anything but its great to be able to write (careful) java.net code using generic InetAddresses and be pretty sure that it will work regardless of which version of IP your network is using.
"Features added in this edition include generics support, autoboxing of primitives, syntactic sugar for loops, enumerated types, variable arguments, sharing of memory between multiple VMs and a bunch of other bugfixes, enchancements, etc."
... decades late. :)
So essentially it's become C++...
The ratio of people to cake is too big
While you get at first sight nice stuff like reusability etc. there are several reasons for avioding generics like an STD:
Over 90 years and counting !
Another change that caught my eye was a skinnable theme for JFC called Synth. I wonder if this will help Java capture some of the kewl market for media players etc.
I also see the beta is being made available for 64-bit Linux.
As a platform, Java is still miles ahead of c#. But I sometimes wonder if the message is lost amongst all the specifications and implementations of specifications. The
Here's a very nice PDF giving actual code examples of the new language features:
- Ti ger.pdf
http://www.javasig.com/Archive/lectures/JavaSIG
I played with the alpha and gave a presentatation about it at my employer. Lots of people were enthousiastic.
Plug: java-1.5_new_features_en_v2.ppt
8 of 13 people found this answer helpful. Did you?
Also included are executables for Windows & Linux AMD64 versions!
Linux, AIX, Windows. We can develop our J2EE apps on any of these platforms and they 'just work' on the other 2 with no extra work. It's glorious. Ever try to cross-compile a non-trivial C/C++ program. Yuck.
Blar.
Looks more and more like Python. All I need now to move from Python to Java is just same small size of memory footprint and ability to interprete the source code. No need to mention FP-things like list comprehensions. Until then - keep your coffe for your blind-dumb managers. I use a real language.
Less is more !
Actually, 1.5 beta has been available for a few months now, but the link wasn't on the main java.sun.com page.
Here are some highly unscientific benchmarks of startup time I just ran on my Athlon XP 2000+ under Mandrake 9.2:
These are relatively consistent over multiple runs.
When I first learnt Java, I was so excited about the write once read anywhere functionality but many language features (or the lack thereof?) simply bugged me. Then I discovered C# and was happy to have found a usable Java - until I saw the probs Mono is facing porting .NET, particularly System.Windows.Forms, to Unix ... and the fact that they would always have toplay catch up, with no big company to support them (IBM, Sun and other Linux/Open source backers already have a huge stake in Java)
When I read about the proposed features for Java 1.5, I knew i could stick with Java for the long term. Good news!
I really like the new language features (and will use them in about 5 years when our server is upgraded :-().
But Swing is even uglier than before. Metal still looks very old, but now it looks like someone very old with obscene amounts of make-up on.
The GTK+ look is even worse. It doesn't look like GTK+ at all (I'm not even sure whether it's supposed to be GTK1 or GTK2).
Worse: font rendering is abysmal. Buttons and menus are barely readable using the GTK+ emulation L&F. The Java VM still doesn't use Xft/Freetype, which pretty much makes the attempt at GTK+ emulation useless.
suck my cock, suck it you shit fucking bitch, I'm gunna fucking wipe you bitch all over the fucking hill, you dumb slut, FUCK U
J2SE(TM) 1.5.0 New Features
J2SE 1.5 In A Nutshell>
yeah this is it CLICK NOW!
" Someone in Suns marketing department should produce a massive wallchart detailing everything Java can do, every major solution for it and arrows showing how they all join together and then mail it out to every CEO / CTO in the country."
Sun has a marketing department? Jeesh, its like saying Novell has a marketing department. This is one thing that companies need to really wake up and smell the coffee on. Although good products can sell themselves, they sell better with good marketing to entice the corporate types. Marketing is the reason why M$ is where it is today.
No. Type checking is stronger because you can avoid type casts. (Note, I'm talking about generics in general, not the Java implementation which is slightly broken because of VM compatibility problems).
What the hell are you talking about? Be more specific.
The lack of speed of virtual methods has NOTHING to do with processor technology. It is there because you MUST do a lookup at runtime (which there is absolutely no way to avoid). This will ALWAYS add overhead, regardless of processor technology. The only way to avoid this overhead while still having "reusability" is to have "compile-time virtual methods" (i.e. templates).
Now you're talking pure nonsense. What security holes? Generics AVOID security holes because they avoid typecasts (invalid typecasts are one typical reason for security holes).
Nonsense. Compilers are not slowed noticably down by generics in general. All functional programming languages support "generics" (type-variables is a more correct term), but the compiler for e.g. O'Caml is still as fast (or faster) than gcc is for C code. Compilers for C++ may be slower because of templates, but that's because the C++ templates are nothing more than macros with a little added type-checking (so the compilers usually have to compile lots and lots of extra code).
There is no such concept as "generics" in LISP -- since everything is dynamically typed generics are the default. If you're talking about macros, then some people may discourage them, but those people are idiots. Macros are the precise reason that the LISPs are so powerful.
HAND.
Here is a more detailed look at what 1.5 has to offer.
Some of my favorites:
- Autoboxing and Auto-unboxing of Primitive Types
- Enhanced for loop
- Enumerated types
- Formatted Output
- Concurrency Utilities
- Improved Diagnostic Ability
- Desktop Client
[alk]
Java is way to difficult to learn and implement. Gimmie good ol' Perl any day. No variable declaration, no worry about classes and objects, just write it out, drop it in the cgi bin and you're ready to go. Perl is the gurilla attack of programming. Go in, get the job done, and get out. Maybe they should call it SEAL.
who's on the cover - sean cassidy or leif ericson?
I luv spin. But, if C# says it's an innovator, then it already admits that C# isn't an original language and a pure marketing ploy.
In reality, you may only use the term "Incorporated".
Replace the term "innovated" with "incorporated" in the previous post, and suddenly it's matter of fact, instead of a troll.
I don't want to start a flame war, but do you think that the pressure of .Net pushed some of these features through that Sun seemed to be holding off on for the longest time.
.Net made it's comming out in 2002.
Such as enums, generics, boxing, foreach loop, etc.
Just a question that I have had, because I never heard anything about these features comming into Java until after
They save typing, and by typing I mean developing callusses on you fingertips.
this feature is what c# needs! Too many times I come across all sorts of casting errors, and I can't be botherd typing up all the casting needed.
fuck off and die.. all of you
Slow Down CowboyNeil, you fucking fat fuck!!!
Slashdot requires you to wait 2 minutes between each successful posting of a comment to allow everyone a fair chance at posting a comment.
It's been -324231342 minutes since you last successfully posted a comment
Chances are, you're behind a firewall or proxy, or clicked the Back button to accidentally reuse a form. Please try again. If the problem persists, and all other options have been tried, contact the site administrator.
Is this the patch that finally makes Java fun?
(Note: I work in a Java shop. Also, I personally think Java is a serious pain in the ass, mostly because of runtime issues, not language issues. But hey, I'm mostly a docs guy.)
- chrish
I find it hard to imagine that anyone is still using Swing these days unless they are locked in to it, SWT is the future of Java GUIs.
I know the compile-time checking for things like ArrayList is a good thing, but is there any note on how this may impact things like HttpSession or HttpServletRequest attributes, where different data types are essential?
I believe that overall, much more time is spent maintaining code than in writing it, and yet languages seem designed mainly for the latter. (Perl particularly!) Some of the changes -- new for() loops, generics -- will improve readability and maintainability too, but I worry that the new imports, and maybe enums, won't. At present, it's fairly easy to look at a small section of Java code and know exactly what it's doing. With no preprocessor, and nice easy scope rules, you can easily tell what names and objects are being used -- that's one of the things I really like about the language. Additional imports, not just of class names but of other identifiers, risks muddying this. Has anyone done much actual work in 1.5 and can speak from experience?
Ceterum censeo subscriptionem esse delendam.
I'm still stuck on 1.3 due to the Blackdown JVM's Debian package not being updated for 1.4. I could do it non packaged-managed, but I'd really rather not...
Thanks
It bothers me when Java's portability is extolled. C is portable too, to more platforms than Java is. And the system call libraries on most platforms have C interfaces, not Java. The only interactions with the host OS that Java supports natively are through the weak File and System objects, through which I can only get the most generic information. For everything else I have to use JNI and, you guessed it, C.
Java's only better if you don't know what you're doing (you can't have pointer bugs, for instance). C and C++ are better when you want to build your language constructs from the bottom up at the same time that you write your program from the top down.
Still behind C# and the .NET Framework in general.
*Sigh*... you can get precompiled binaries for Windows x86, Linux x86, Solaris SPARC and Solaris x86. Whoopie. Gee, how exciting.
Oh, and the downloads page actually confused me for a second. They have a giant section labelled "32-bit/64-bit for Windows/Linux/Solaris SPARC
32-bit for Solaris x86". I kept thinking, "Why do they offer a Linux SPARC version but not a Linux x86 version??" Then I figured out how to parse it. When they write "Linux", they mean "Linux x86", because there aren't any other Linux architectures on the whole planet, right? Sheesh.
Excuse me while I continue not using Java(R)(TM) on my HP-UX workstation at work, or on my OpenBSD x86 box at home (but Kaffe sort of runs on the latter).
Why can't Sun just release a god-damned TARBALL OF THE SOURCE CODE and say, "Here you go. Here's Java 1.5.0 release candidate 1. We'd like to have some help porting it to FreeBSD, OpenBSD, NetBSD, BeOS, Mac OS X, AIX, HP-UX, Tru64, IRIX, and so on. Patches are welcome. In fact, we've released the entire thing under the new BSD license (without advertising clause), so you can integrate it with your applications, include it on official Debian CDs, etc."?
*Sigh*
Pretty cool stuff, and it shows that Sun does accept changes to Java from the outside that are of clear benefit.
- Vincit qui patitur.
Our open source SwingSet toolkit for making the Swing components database-enabled/aware will now be much easier to install/distribute. Hooray!
Sun have been promising generics for Java since 1997, and I have been patiently waiting for it all this time.
:)
I haven't had the chance to look at C# in detail yet, but it's certainly no co-incidence that these features finally saw renewed activity after C# appeared. So, thanks, MS, for applying a little competitive pressure onto Sun for us
I'm also a little disappointed to see just how similar Java generics are to C++'s templates. I was hoping that we were waiting for a *reason*, and that reason might be because it was a new and interesting approach. But, at least superficially, this looks almost exactly like C++ templates, with all the positives and negatives that go along with that.
I hate it when someone makes a valid point and gets modded down because it's controversial.
Come to the realization friends; Java IS slow.
Personally, I LOVE Java as a pedagogical tool to aid in teaching computer science, and I had the same love for Logo, but obviously both of these languages have at least one thing in common; they are hampered by the fact that they are slow.
I don't know the meaning of the word 'don't' - J
All I want is structs. Passing by value. Right now I'm working on a funky text editor that needs a little extra info per character, and without structs I have to twiddle bits in a 64-bit integer. Don't really want each character to be a reference to an object, I don't think the performance would too great. Good thing I can cram everything in 64 bits, but I'd rather have a bit more space and reference fields by name.
Doesn't seem like so much to ask.
Are you serious??
You should try to do some netowrk programming, say for example real time analysis of netowrk packets, see if java can handle a gigabit network...I didnt think so.
Java has gotten a lot better, and the learning curve is shorter, I think generating machine code from byte code would make it as fast as c/cpp , something like what gcc/java is doing.
sorry officer, left my sig in my other computer.
Microsoft has it REALLY easy, and is cut way too much slack, when it comes to development environments and languages. They control the operating system and the hardware specifications and compliance. And, they have done so for well over a decade.
Java is truly platform independent, which is a huge challenge. That challenge was met with a well designed language that operated slowly. However, between 1.4 and 1.5 there are substantially speed increases in the VM which bring it up to par with the fastest languages available.
When you think about developing applications you need to consider many things other than pure technology:
..the list goes on.
- Who will be around in 5-10 years (both MS tech and Java tech will)
- Access to developers (while MS is the clear winner in the US, this is not so in other countries, where even gov'ts are against MS)
- Vendor independence and support (this is clearly in favor of Java)
"Ain't I a stinka..." - Bugs
I mean apparently some level of pressure from dotnet does show up... And that's good I think. Not that I like either of Java or C#... Both look too restrictive (without real benefits) and kinda old to me. I'm leaning more and more to move all the stuff I do to Python (i.e. where I may decide what to do it in, sigh). Slick, reliable, and just very nice to work with.
It seems to me that as time goes on, the JVM specification adds functionality that can possibly exclude it from being ported to other platforms. With this new release, the whole "Shared memory between JVMs".. I am pretty sure there are some not-so-advanced or alternate-goal OS's that doesn't support these kind of things.
Sure, maybe the blame can be put on the author of the OS, but I know that the "write once, run anywhere" vision is starting to slip.
"When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
Finally! I can use a 64 bit version of Java on the Opterons and see how the speed on the large (~6 to 8 gig datasets) improves/decreases
Agile Artisans
Here's a screenshot of my EBLA project using the new default look & feel and the new SwingSet navigation bar.
Curious if 1.5 has a simple method of keyboard entry. As a 1st year Java student, I find it odd that System output is done with a simple command, but System.in is a hoop jumping affair. Of course, I may not know what the hell I'm talking about...
Their basic tactic has always been "embrace, extend, extinguish" - not "steal, sue, squash".
You might want to talk to the many companies Microsoft has stolen from, notably Stac (I think was their name). Sue? Squash? Yep, sounds like Microsoft. You must be living in some weird dream world.
Infuriate left and right
Shouldn't 64-bit support come naturally by the VM extending the pointers? Does this mean class files compiled for 32 or 64 will be sub-optimal or incompatible with the other environment?
Great, now I'm hungry again....not.
Trolls lurk everywhere. Mod them down.
As long as you compile with JDK 1.5, the new language features are available to you now -- except the generics implementation of the collections classes and even that is solvable. This is because the bytecode generated by the JDK 1.5 compiler is 100% compatible with JDK 1.4.
I have recently switched one of my company's JSP sites to jrocket from BEA because we noticed a visible speed improvement using it over SUN's jvm
I would like to use SUN's JVM.
Does anyone know for sure if 1.5 has any significant performance improvements?
Steve
I've played realtime 3d games on java, and it doesn't look slow to me. Oh, wait, I _write_ realtime 3d games on java, and it doesn't look slow to me.
the JDK 1.5 compiler is 100% compatible with JDK 1.4
Unfortunately, you're wrong.
To use the new language features, you have to use the "-source 1.5" switch with javac from 1.5.0. That makes javac create bytecode that can only be used with JDK1.5 (see the javac docs).
Is it just me who loves that typo?
To have a right to do a thing is not at all the same as to be right in doing it
Hotspot checks your array indices, and if it figures that no bounds are broken, the checks are disabled. So if you loop over an array a couple of times, C and Java perform almost identically. You can easily check this by benchmarking.
- If one can only read values of type C with A methods, then the relation is covariant, i.e. to get A<As> <: B<Bs> we need As <: Bs.
- If one can only WRITE values of type C with A methods (e.g. pass them as function parameters), then the relation is contravariant, i.e. to get A<As> <: B<Bs> we need Bs <: As. Counter-example:
- If parameters of such types can be both read and written, then you need both As <: Bs and Bs <: As, i.e. As == Bs. That's what happens with java. If you want your structures to be covariant, you have to forbid their modification (here, forbid to change the cells' contents).
If in some exceptionnal cases you want to enforce subtyping, it's up to you to use casts. But you cannot assume a bogus subtyping relationship without noticing it, therefore the type system did its job.It's a convenience, to be sure, but it seems to me that autoboxing is a setup for programmers to make mistakes, as certain classes can get automatically and invisibly created, where before there would have been an error message issued by the compiler. Hopefully there's a command line switch to disable it so that the compiler can still catch those errors.
Everything else in 1.5 I absolutely love.
File under 'M' for 'Manic ranting'
If the only tool you have is a straightjacket, everyone else looks insane.
Scanning the docs, I don't see anywhere where it says that's a problem.
Wouldn't it be possible to java -source 1.5 -target 1.4?
Information: "I want to be anthropomorphized"
Java conceptors did not want a C++-ish feature, ie 'preprocessing inside', they want somethin that will not break the object point de vue of Java.
;-)
.net almost 4 years old now (if you include earlies and beta ey!).
About the other functionalities,
enum was discussed long time ago, but they did not think it worth adding it. But according to experience, it appears that having some defacto feature is better that depending on people to understand an advanced pattern pro&con.
The foreach loop, was long time requirement, since the collection framework appeared, but unfortunatly they did not had time to build this in befire.
About the boxing and anotation, those are just MS ideas improved ! Who gonna blame Java for supporting interresting features ? No MS that just CC the Java spec after leaving the Java playgound in late 1998
Anyway, the new functionalities and improvement are so dense that IMHO, this is the best release ever brought out of Java !
FYI,
And many serious problems remain with the Java language:
The most serious problem with the Java platform is and remains, however, that it is basically proprietary: all Java 2 platform implementations depend crucially on code licensed from Sun (e.g., there is no independent Swing implementation). Furthermore, there doesn't exist a Java standard that people can implement without having legal constraints imposed on them by Sun.
Java is NOT portable in my gentoo running kernel-2.6.2
I want the JVM-1.5 sources !!!.
open4free
No (assuming you mean javac). javac reports "javac: source release 1.5 requires target release 1.5" if you try that.
We recently switched from Java Servlet development to ASP.NET, and ASP.NET is MUCH faster to develop in. Yes, I know that we're locked in to MS OS and server, but given the incredible productivity increase, this is a small price to pay.
All things being equal, I'd much prefer to stay away from MS. But ASP.NET is far too superior a way to go.
It looks like the new Java release finally makes it roughly as good as C# (or Delphi, after which C# is modeled), but more is needed to for the Java world to be as efficient as the ASP.NET world:
1. A good IDE. In ASP.NET, I can drop components on an HTML form, which bypasses a lot of HTML grief. The entire paradigm is easy-to-use and integrated. In Java, I need to use the comparatively awkward Eclipse or Forte IDEs, muck with Dreamweaver and whatnot - it's a productivity-destroyer.
2. Servers that are not obtuse. I can get IIS to do anything in about 5 minutes. It takes hours or days to do anything in Tomcat or Resin and Apache. My time is precious.
a Swing app in 2.5 secs? it takes about 2 secs to start gedit, a freakin' text editor.
pr0n - keeping monitor glass spotless since 1981.
I may have missed it, but I couldn't spot a final release date. Anyone know?
I'd like to use 1.5, but I don't want to ship a commercial product based on a beta devkit.
But also on the platform.
.net.
.net impl). Whereas Java do run on most OSes !
:)
Do not forget that Java (the name) is used for 2 things : The Java platform, and the Java language.
By default, you application for the Java platform using Java language itself (like you defacto develop in C# for MS.net), but there are lots of differents language that can compile to java's bytecode as well.
IMHO, the strength of Java is the platform and not the language. Without the platform concept, it would never have been different from his ancestors C++/SmallTalk/ObjectiveC ! There is the big difference with
MS.net only run on some MS windows OS (No Mono is not&will not be a complete and real
This is no b*illsh*it but just truth.
If you want to contribute to Java libre world then i invite you to join the FSFGNU Classpath project, as they are building a full GPL implementation of the Java platform!
This can exist because all Java spec (JSR+TCK) are available to the public (including Reference Implementation) so even if the RI is not GPL, you can just create a new implementation that apply whatever license you want. That's how Java managed to balance freedom & compatibility
Linux+Java is the baregain for enterprise solution, and with Java 1.5 and Linux 2.6 functionality & TCO are there ! Here we got the reference platform for developement of the next decade.
I'm crossing my fingers...And I must say, I'm quite excited about future possibilities...
Just think:
Java 1.6 : Overloadable operators
Java 1.7 : Pointers
Java 1.7.1 : Void Pointers
The prospect of the combination of overloadable operators and pointers? Oh baby baby baby!
Apple (finally!) has a 1.4.2 out, and it's superb. For a brief moment, OS X is up to date on Java.
Does anybody know anything about Apple's timeline on 1.5? Will we see a beta? Will we at least see a concurrent release? Apple has been notoriously out of date in the past, but they swore that they would improve; now's the time for them to prove that they are.
AS far as i know, BeanShell is able to execute (read: interpret) *any* java code. That doen't help with the memory-footprint, but it allows dynamically generated java to be run without having to invoke a compiler first.
BTW: The BSF (Bean Scripting Framework by IBM) has a engine-interpretation that allows using java-code as scripts. This is however implemented to compile the code into a class-file (which is quite slow the first time you run the code).
BSF is REALLY COOL as it provides a generic interface to scripting languages. So you can make your app scriptable without having to worry about the scripting language to use. Languages supported include (IIRC) JavaScript, Java, Python, Perl, Tkl, BML (bean Markup Language) and even Scheme and VB (i think). And it's quite easy to implement a custom engine for other languages...
I have discovered a truly remarkable sig which this 120 chars is too small to contain.
Now if they would just implement unsigned types (uint, ushort, uchar) the jvm could be used much more effectively for lots of things. Especially vision, graphics, and all kinds of numerical algorithms.
Guess what? I got a fever! And the only prescription.. is more cowbell!
Has anybody tried to download and install this baby on a Windows XP machine? I'm not able to use any of the new features (compiler tells me that symbols (methods, etc.) are unknown).
Is this possible? I don't have any other JDK on my system and I took the examples on the Sun page. Is anybody else experiencing this?
Java is for the idiot programmer. I bet you just lost 95% of the readership, when you emitted that line of code.
Java isn't about development power - it's about management power. It's about being able to hire idiots to write bloated code for big companies and pay them peanuts.
All of the people who like java are nothing more than mgt's biatch.
.Nyet. I like it. If you don't mund, I will adopt the term from now on... :)
Just skip this and program in much better JVM based languages than Java:
Scala
Nice
Prior to macOSX apple didn't bother to release newer javas (I think 1.2) because the OS8-9 wouldn't support some of the features it needed. Most modern OSs should easily support what the JVM needs
The fastest you have a running program, the better. Everything else, nice as it may be, is accessory. If you want to read something buy a book, I garantee you will find better entertainment. If you want to understand a program, read the docs, the comments and the diagrams.
I'm glad to see the JAXP tools finally embracing DOM level 3 and SAX 2.0.1. All sort of XML Schema goodness involved there.
Of course Apache's Xerces-J has this support for a while with 2.5 (2.6)? Yeah it should be portable but, eh, why switch horses midstream?
What is music when you despise all sound?
Swing is pretty slow, and I don't see sun promoting any of the alternatives yet.
You need SWT. But I don't think you'll see sun promoting it:)
It's nice to see that a Java site such as theserverside.com completely ignores Mozilla. Check it out for yourself...
"Access to developers (while MS is the clear winner in the US..."
Says who? I haven't used a MS development tool in what...7 years now. They may still rule the desktop with regard to OS, but dev tools don't necessarily follow that. It's been Borland and IBM for me....
This release is fantastic. Java keeps on growing.
-----------
Create a WAP server now
It was my understanding that the first versions of Java were called simply "Java". Then at some version (1.2?) they started calling them "Java 2", despite not being 2.0. So, is this 1.5 version still "Java 2" or have we moved on to "Java 3"? (which, as I understood it, was the title likely associated with 1.5)
Schnapple
Of course, IMNSHO the whole "Java 2" name was just marketing run amuck. I don't see how it's done anything but cause confusion. If marketing absolutely insisted on having a "Java 2", engineering should have bumped the version number to 2.0.
I'm not a fan of marketing determining version or release numbers, nor version number inflation, but changing a marketing product name to include something that looks like a version number without having it match the actual engineering version number is obviously bad.
I used to love Java. Then came the fuc**** dotnet world to wreak havoc. Now Java responds well enough for me to take a look at it again. :P
Sorry. You've confused source and target. If you compile with -source 1.5, it tells the compiler to allow the new 1.5 constructs in the source code, but the target bytecode is still 1.4 compatible.
There have been no bytecode changes in the JVM since it was released, though class file formats have changed.
It's nice to see that a Java site such as theserverside.com [theserverside.com]completely ignores Mozilla. Check it out for yourself...
What are you implying? The site comes up fine in mozilla based browsers.
Big installation aside, it installs a giant .MSI file, plus a backup of all the library files! Does anyone know how to turn the duplicates off?
You've confused source and target.
No. -source 1.5 implies -target 1.5. And even if the bytecode is basically the same, jdk1.4 refuses to run code compiled with -source 1.5 (with javac from 1.5.0beta). All you get is a java.lang.UnsupportedClassVersionError.
will be code like this:
s ()) { ...
Enumeration enum = collection.elements();
while(enum.hasMoreElement
}
Guess what... that is a compile error now. "enum" is a new keyword, and is no longer valid as a variable name.
Scott
If you've tested it, then I believe you, but the docs are wrong then because they say "target -1.4 is the default."
The docs are (obviously) not very clear. But in fairness -target 1.4 is the default - unless you specify -source 1.5.
In many languages nowadays, be it fortran, c++, perl, python, etc. etc. etc. it is possible to use straight math operators on arrays or matrices, which has a clear and concise syntax that everybody that learned math understands. This cuts down on the code to write, the formula is clear and can actually be looked up in the original paper if you care, and, the libraries are usually pretty well optimized. Compare this with java, where, if you use a matrix library, you get some cooked up API that doesn't resemble the way you think about arrays of numbers at all.
Okay, as you seem to claim that operator overloading is absolutely bad always, please explain why:
matrix c = a + b - c;
is bad, and
String c = a + b;
is considered acceptable? Hell, the addition operator on strings isn't even associative.
Hey there.
I was wondering if you have any info on 3rd party SDKs or JREs for Mac OS X.
Specifically I was pretty annoyed that no official 1.4 JRE was ever made available for Mac OS 10.1, and now I strongly suspect that no official 1.5 JRE will be available for Mac OS 10.2
My beef with Java is that the Sun SDKs are such a pain in the ass to download from a command prompt.
They use some extremely arcane methods to make sure you have to agree to their licence (which is fair enough) but then once you've started downloading, you can't pause and resume! I even tried their stupid download manager, and it couldn't deal with it.
For those of us on modems (and have ISPs who boot us off every 2 hours to avoid hogging), this is really annoying. I had to get a friend with broadband to download it, then upload it to my FTP server.. so I can stand a chance of downloading it properly!
I've seen some really complex explinations in this thread. It's really not that complicated. If an argument is of a certain type, the supplied value must be of that type. End of story.
So, let's think about inheritance. All ArrayList objects are List objects. However, not all List objects are also ArrayList objects. If you declare a variable as List, all anyone knows is that it is simply a List object, even if its initialized as ArrayList. You can, however, test for the type of the value ( getClass().getName() , instanceof , etc.) and then cast appropriately. So, if you are certain that your List variable contains a value of type ArrayList, you can down-cast it to ArrayList and pass it in.
By the way, at the risk of being too specific, here's a pointer when you're using the Java Collections Framework. Usually, you want to use the interface classes for your arguments and return values. Use List, Set, etc. for arguments and returns, not their implementations. The whole point of an interface is you don't care how it's implementing, you just care about what is implemented. In certain cases, you do care about the implementation. For example, TreeMap sorts the entries by key, where as LinkedHashMap guarantees the results will be kept in the same order as they were added. These properties are useful in some cases, but in general, use the base class whenever possible.
So, in summary remember or learn inheritence rules and the distinction between the type of a variable and the type of a variable's value.
Join Tor today!
The "enhanced" loop removes readability from the language, but just that.
Autoboxing is more problematic. For example, if you declare
you might be thinking the intList is backed by an array of ints (int[]), but they are not. They are backed by an Object[] and every element is an Integer.
AFAIK, There is no way to create an ArrayList backed by an int[], so you have to create an alternative class or use int[] directly, but naive programmers are surely going to believe that an ArrayList will be as efficient as an int[] when it will clearly not be.
My heart is pure, but make no mistake, it's pure evil
...this should not be a reply-to-self but a reply to the AC telling me about OCAML. damn.
I have discovered a truly remarkable sig which this 120 chars is too small to contain.
Among all the posts from java users containing disinformation, paranoia, and FUD about C#, I finally found an _even more_ biased one going the other way!
I shall call this new sport 'ignorance surfing'.
Whence? Hence. Whither? Thither.
Compare the rendering of the page in Mozilla to IE. I'm using Firebird 0.7 and the header section is borked.
I remember OpenGL being announced, but never saw any mention of it again. The JOGL site seems to be dead. what is going on? First they get my hopes up...
I'm using Mozilla 1.5 and is just fine. A great improvement over the previous theserverside L&F that had problems in Mozilla.
"I think this line is mostly filler"
That's funny -- it seems that in another 4-6 years the language features of Java will approach those of Common Lisp.
The main difference being that CL is standardised and thus isn't a moving target -- you don't have to worry about the language changing from under you every once in a while. You can concentrate on your libraries and applications.
Mark my words. All of that will come in time.
See, Java started out like so many projects. "We'll do it better because the current stuff is too complex."
Then they learn, like everyone always does, it's complex for a reason.
The ratio of people to cake is too big
Finally! I can use a 64 bit version of Java on the Opterons and see how the speed on the large (~6 to 8 gig datasets) improves/decreases
Unless and until the language supports a construction like the following, so-called "64-bit" support is utterly meaningless:
So: Did we get 64-bit array indices this go-round? Or do we have to wait another two years?If the latter, then: HELLO C#!!!
I'll correct myself, it doesn't render properly at 800x600 in Firebird 0.7.
Sigh
I think this internet thing sounds like a good idea
I saw an estimate once that 80% of the time spent on code is maintenance. (Of course, this will vary between systems and projects. But it seems reasonable IME.) That means that people will spend four times as long reading code, amending it, extending it, and fixing it, than they do writing it in the first place. Code that suffers from being knocked out quickly takes longer overall -- bugs are harder to find, it's harder to change without breaking, it's harder to learn from, harder to fix, harder to read, harder to do anything with. That applies whether it's the writer or anyone else -- but especially for anyone else, who might have trouble following the author's disorganised thought processes or labyrinthine code.
IME, clarity and neatness isn't something you can turn on and off. People who don't care about how code looks or functions, often don't care about how well it works, or even whether it works...
As another commenter said, I hope I'm being trolled here!
Ceterum censeo subscriptionem esse delendam.
I would like to ask the question "what fool came up with the idea of writing code inside comments, aka metadata" Are we now not allowed to change comments anymore? This is pure stupidity... At least C# solution is more elegant than this. Sorry.
I'll correct myself, it doesn't render properly at 800x600 in Firebird 0.7.
.8 of firebird. The site can't really be held responsible for the fact that different versions of mozilla browser's render it differently.
If you are going to use a pre 1.0 release of anything, you aren't really entitled to complain, especially when you aren't even using the latest pre 1.0 release of said software. It renders fine in
Reflection breaks the typesafety of the generics model, which is enforced only at compile time. Therefore, any reflection-driven manipulation of generic collections, such as via Jython, will completely bypass the typesafety of the system, probably yeilding ClassCastExceptions at retreival time (I've not played with the beta yet, so I'm talking out of my ass a little bit here).
It would be nice when / if the EJB CMP relation interfaces switch from vanilla Collection and Set to these typed collections. Would ever so pretty up EJB code!
Firebird 0.8, hmm?
Most languages seem to use . to cat strings, but I suppose Java needed that operator more elsewhere :)
Personally, I don't mind using -> to invoke a method. It gets around the overloading problem and doesn't seem like that much extra typing when you consider that most of the stock classes and methods have incredibly long names. Which leads me to my pet peeve, the encouragement of one letter variable names, leading to bizarre stuff like:
PortKnocker p = new PortKnocker();
p.knockOnSomePorts();
Vino, gyno, and techno -Bruce Sterling
If your code only depends on other open source software, you are correct. If you must interact with closed source APIs then things get ugly. Your shared libraries just work on multiple Unix servers? Java server plugins do.
Blar.
This is a new feature Reachability of host
Implemented using ICMP & echo !
And will help Scripting and dynamic bytecode generation tools Yet another cool feature in Tiger :)
The apps we've developed with SwingSet all use a shared connection.
I wonder if Sun plans to roll out a Java programmer certification upgrade exam for the 1.5 platform before my 1.4 certification expires in March 2005.
I have indeed set off a number of bullshit detectors, and rightly so. I apologize. My statement that C# code must be run on a Windows-supported platform under Windows is incorrect. This is admittedly very old information that I should have checked out, in fact the only time it could have been true was in the formative stages of the language and the .NET platform.
I try to be as responsible as I can in posts to the /. community because it is the first forum I've found that self-moderates so well (in most cases, anyway--I'd apply a negative mod to my own post here if I could).
Anyway, thanks to those who pointed this out.
sev
but have you considered the following argument: shut up.
I too thought of this as a possible means of explaining this situation, but rejected it (and I'm referring to your intended meaning pointed out by tbspit in this thread). The explanation you put forth here does not satisfy because the same argument could be applied to Integer[]s and Number[]s.
Alas, the corresponding array code does indeed fail at compile-time, and it is well-defined and unambiguous:
There's no reason in generics why the compiler couldn't have been designed to similarly reject code if you replace the arrays with type-parameterized ArrayLists.sev
but have you considered the following argument: shut up.
Yup
Bablefish Translation of Parent Post:
"Shit! I know C inside out, even the tricky stuff like not dereferencing null pointers! Who's going to pay me $$$ to be that smart when any yahoo with a copy of Eclipse & the JDK can write apps for any platform! Hmmm if only I'da thunk a bit longer, I could have brought up a real objection to the Java language - no guaranteed behaviour at object destruction, for example. Too late now though.."
Worthless. Pitiful.
None of your angle brackets are being rendered.
Discussions of generics never seem to get very far on Slashdot.
I know various people that are taking Intro to Computer Science at my university. The class starts out in Scheme (ie Miniture LISP) then progresses on to JAVA. There teacher tells them that Scheme is the basis for JAVA (not the syntax but the underlying-operation). I've used both and I really don't see any parralles... Does anyone else see how JAVA is built upon Scheme (if it is at all...)