Indeed. Compared to UltraEdit, it's a very nice IDE.
Only in 2005 there was rudimentary refactoring support and code completion (before doing a complete build). There still is no visual editor that handles manually generated code either. Don't even talk about sourcesafe. Oh, and to install a build environent you have to upgrade your system, your browser, restart a few times, then to find out a lot of dependencies are broken and that sourcesafe 6.x doesn't work anymore.
Let's not talk about 2003 version, which was basically a broken first attempt. I even messed up the assembly cache unintentionally.
But then again, I'm a very spoiled Java programmer. Install Java JDK, unzip eclipse, double-click eclipse. Get nice environment.
Huh, I've tried to explain the difference between JPEG and GIF/PNG and even that did not succeed. Fortunately some of these camera's seem to create smaller sized pictures by default. Funny enough, if they do not buy huge sized memory cards and shoot a lot of pictures (or high def. video), I've noticed that most people suddenly do understand that turning down the resolution a bit might help.
Users are smart. They are just very short range smart. If there is an immediate benefit to them, they will do it.
There have been very few problems with the JVM so far. The good thing is that the JVM is a very small target to hit, and it's pretty easy to test it and make sure it works correctly. Everything that runs inside the Java JVM, including all libraries that do not directly call native code, is bounds checked. Many of the examples you have pointed out would never have worked inside a Java VM, where buffer overruns are *very* unlikely. I believe up till now one has been found.
The VM does make a very clear distinction between data and code. If you want to create code, you will have to pass the byte verifier. And if that is using a security scheme for e.g. applets, you cannot even write to disk. Maybe the underlying system cannot see that it is data or code, but who cares? Of course any bug in the JRE (that is visible to a Java program, pretty unlikely) can be exploited. But the JRE has proven to be a very stable environment. Much more so than any other runtime environment I've encountered so far.
You are also trying to make a distinction between native code environment and the Java environment. There really isn't too much difference. But while normal, native, platforms are horrendously complex, use pointer arithmetic, huge numbers of instructions etc. etc. Java runs in a pretty well understood and much less complex environment, where most of the risks of a native platform have been rooted out. All in all, Java is pretty well suited for security and stability.
If you don't like runtime code execution, I would advise you to stay as far away from your computer as possible.
"It is provably true. The proof is trivial, in fact. Java is non-native bytecode. Therefore, at some point in time, that bytecode must be translated. This takes time."
That may be, but if you acquire information while the code is running, then you may be able to speed things up a bit. Normally, natively compiled code does not do that. Besides that, this is all theoratically speaking. The same argument was used against C: anything you did should be slower than assembly, no? It turned out that compilers won from assembly most of the time: computers are much better in following guidelines and testing for optimum performance than users are.
Besides that, I would not mind spending a bit of time for added reliability and security on 90% of my applications.
"Since few OS services are bridged except those that are fully cross-platform, a Java app cannot fully take advantage of the latest technologies in any OS."
That depends. Some things are enabled automatically. But one of the main points is write-once, run-anywhere. Sure, you can get out of that using JNI, but you may have to rewrite certain bits. On the other hand, how do you know that an application that you write runs smoothly on another machine if you used C++? What if it is an older machine?
In my opinion, the main advantages of Java are the simplicity of the language, the well-documented and largely very understandable API, the availability of a very large repository of usefull components (check out Apache!), the inherent security architecture...the list goes on. Even if you were 100% right on the previous two points, there is enough merit in Java to take it seriously. And if you look at the penetration rate of Java, well, it's HUGE. Mobile phones, smart cards, TIVO's, blu-ray will use Java, embedded devices and of course many businesses that take security and reliability seriously.
I've got a fanless nVidia 6200 based graphics card from ASUS. Together with an ASUS motherboard that is passively cooled, a ASUS psu that has a very large, slow spinning fan and an AMD Athlon. All together about 70 + 65 + 60 + 120 = 315 euro. Throw in a case, a harddrive and a DVD you've got a *very* quiet PC. Unfortunately I bought a WD Raptor to top it all off, so for the first time in, say 5 years, I am able to really hear if my HDD is doing anything without having to look at the stupid hidden lights. And I haven't even closed the lid yet... Haven't trying games yet, but it's lukewarm at most running a linux desktop at 1680x1050 (bragging a bit here, sorry).
Other people seem to buy videocards the same way others buy harley-davidsons...
Most of the time, when I try and connect to a server online, the TCP connection to the service is pretty secure. Unless my ISP/telco, who are quite trustworthy, try to break into the session there is no way anybody is even going to see my VNC connection. On the other hand, unless I take special measures, absolutely anyone can attack the VNC service. SSH has quite a bit of overhead, so just saying I have to use that does not make me too happy.
In other words, this can make for a much bigger target for hackers. Even plain text passwords can be pretty secure (as long as they are quite large, and not many can be tried in a short time interval).
Netbeans is not and never was a great IDE. I've tried every version as they came out, and they were always full of bugs, and (more importantly) completely unintuitive. That's why Eclipse is so great, it has many options, but you won't get lost. I do think that the refactoring etc. should be more context sensitive, but that's a specific design choice afaik (keeping the options there for people to find). And I simply hate Swing. I've tried running the Swing demo on my Ubuntu just now, in Gnome L&F, and it whites out the menu's if you select them, even though the background is of a light color and all other apps use black. And the next time I am seeing another non-default file-chooser I am going to screen. Whoops, just clicked one in the Swing demo, YUCK.
Sun is to blame for not getting the support for Java on the desktop. And Microsoft of course. Although I am quite adamount that Sun would have messed this one up none-the-less. They do not always listen to reason.
Don't, you will like it even less. It's said to be somewhat faster, but that comes at a horrible cost. Maybe you should try the fox-port of SWT instead.
Eclipse is running pretty well on the ubuntu 5.10 I must say. I've installed the Sun JDK 1.5 (that's the version we developers still use:) and the latest Eclipse version. I've seen some small idiosyncrasies with GNU classpath, but even that run pretty well. One should not use the default version of Eclipse. Since the installation normally consists of unzipping and running the eclipse binary, you are advised to use the latest version anyway. And I must admit that previous versions were way less responsive. It's still less responsive than Eclipse under Windows, but it definatly is workable.
SWT is far from perfect. It's definately more a hack than Swing, which is setup very neatly. But it does not matter, it's pretty smooth, has very nice widgets and always uses the underlying platform L&F. The Swing default is the Sun look and feel, which is beautifull, but not something I want. On most applications you cannot set the L&F yourself, and the developers choose either Swing L&F, the platform L&F or even worse, AWT. As long as the Swing applications are not in agreement *themselves* and as long as Sun does not make the platform L&F the default, Swing is doomed.
Maybe we should flatten Tibet if it is such a contributor to global warming. Let's create some nice rice-fields and do away with al lthese tiny valeys.
Well, no, obviously he wasn't at home when they stole the keys. Although I could think of people forgetting to lock their house when they are taking a shower.
I buy more movies on DVD already, now that they have brought down the price to 5..15 euro's here in the Netherlands. So far, only movies I would like to watch a second time at least. New movies are first downloaded in DivX format (no need for DVD quality just yet) and if I like them or want to see the special effects, I buy the DVD. Although it would be much more easy to actually find the movies for the right price using the computer, there is no way I am going to buy them with such restrictive measures. And what's the point, anyone can grab the DVD and make a perfect copy (or, to be precise, a BETTER copy without restrictions, they may remove the main menu and all the extra crap as well)...
I think he meant that he wants to have VIM *anywhere* in the (G)UI, not so much as a seperate editor. Say, for instance, in the slashdot comment box. I know that for the Eclipse (development) environment there is a VI top layer plugin. Maybe you could program it in some sort of OS macro (select all, copy, switch to program, create new buffer, paste, change text and do the same stuff the other way around. As long as it's in insert mode by default, it's fine by me.
The only blue screen that can be in the background noise is my TV switched to a channel that is not available. I don't see this change in the near future, although new TV's sometimes don't let to switch to channels that have no signal.
There are only two important compartments in a modern computer, the processor and the memory. If you need to actually store anything you would need a disk as well. And everything in between those parts. For critical communications a serial port should suffice. It's not that hard to make a computer unsinkable, especially if you make (disk) drivers restartable.
Then again, if you don't have keyboard or mouse access to your laptop because (*&(*^)( the X server has crashed, all this does not matter much. Proper analogy is probably when the steering hut is blown right off the ship. If you are lucky you can get to the engines and do some things from there. But the radar (aka my office document) is probably still out.
PS. can the guy that implemented the cursor in firefox please put up his hand while I try and find my shotgun?
Doesn't Windows Vista do this as well? I know this is not a popular note amongst many, but I believe that this was a feature of Vista as well. Problem with MS today is that it is still rather evil (non-open, at least) but they do seem to be leading on some fronts.
You cannot create buffer overflows if you use the VM. There was once one overflow in the virtual machine, I think, but that's ages ago, and security problems in the VM implementation are pretty rare (the VM itself makes for a pretty small target). Same goes for managed code in.NET.
The chances of creating a security problem in Java are just way less than e.g. unmanaged C++, if only because the language is easier to read/understand. Even the best circus artists will go wrong from time to time. So more and better safety measures are only to be applauded.
Of course, a better programmer never hurts either:)
You parents don't see the obvious: the computer should not execute the program (without warning) even if the extension is.exe (or.sh or chmod +x). Most people don't want to run executables they have not installed. The base setting of windows is that regular users cannot install applications, but they can put applications almost anywhere, and they sure as hell can run regular.exe's. This is great for portable firefox, but it leaves a huge security hole.
A lot of these things are being addressed. There will also be better terminal handling and stuff. But the main thing about Java is that it should run on most platforms without modification. That said, if you want such a platform specific thing, there is nobody stopping you to do it yourself. Just use the "native" keyword and program it in a language that can create.dll's or.so files. Or just execute an executable and processing the output. This is not that hard to do, and quite alright, as long as you remember that it is platform specific. You might want to make it an optional part of your program though (if only to get it Java certified).
Users never care about languages. They care about applications that make a computer a usefull asset. Currently, I am in the (slow) process of writing an open source Java binary newsreader. Maybe you would care about that. Azureus, the popular bittorrent client is written in Java. Maybe you need that. And maybe you would want to install an application server to serve a nice Java application, although the PHP market seems to be bigger than the Java market for such applications for now.
Java is used a *lot* by enterprise customers to write very stable systems, with a web-front end or without. Linux is still used a lot as an enterprise system. Easier, or default installs would certainly help a lot. Currently, even if there is Java installed, the version is too old most of the time in my experience.
Indeed. Compared to UltraEdit, it's a very nice IDE.
Only in 2005 there was rudimentary refactoring support and code completion (before doing a complete build). There still is no visual editor that handles manually generated code either. Don't even talk about sourcesafe. Oh, and to install a build environent you have to upgrade your system, your browser, restart a few times, then to find out a lot of dependencies are broken and that sourcesafe 6.x doesn't work anymore.
Let's not talk about 2003 version, which was basically a broken first attempt. I even messed up the assembly cache unintentionally.
But then again, I'm a very spoiled Java programmer. Install Java JDK, unzip eclipse, double-click eclipse. Get nice environment.
Huh, I've tried to explain the difference between JPEG and GIF/PNG and even that did not succeed. Fortunately some of these camera's seem to create smaller sized pictures by default. Funny enough, if they do not buy huge sized memory cards and shoot a lot of pictures (or high def. video), I've noticed that most people suddenly do understand that turning down the resolution a bit might help.
Users are smart. They are just very short range smart. If there is an immediate benefit to them, they will do it.
There have been very few problems with the JVM so far. The good thing is that the JVM is a very small target to hit, and it's pretty easy to test it and make sure it works correctly. Everything that runs inside the Java JVM, including all libraries that do not directly call native code, is bounds checked. Many of the examples you have pointed out would never have worked inside a Java VM, where buffer overruns are *very* unlikely. I believe up till now one has been found.
The VM does make a very clear distinction between data and code. If you want to create code, you will have to pass the byte verifier. And if that is using a security scheme for e.g. applets, you cannot even write to disk. Maybe the underlying system cannot see that it is data or code, but who cares? Of course any bug in the JRE (that is visible to a Java program, pretty unlikely) can be exploited. But the JRE has proven to be a very stable environment. Much more so than any other runtime environment I've encountered so far.
You are also trying to make a distinction between native code environment and the Java environment. There really isn't too much difference. But while normal, native, platforms are horrendously complex, use pointer arithmetic, huge numbers of instructions etc. etc. Java runs in a pretty well understood and much less complex environment, where most of the risks of a native platform have been rooted out. All in all, Java is pretty well suited for security and stability.
If you don't like runtime code execution, I would advise you to stay as far away from your computer as possible.
"It is provably true. The proof is trivial, in fact. Java is non-native bytecode. Therefore, at some point in time, that bytecode must be translated. This takes time."
That may be, but if you acquire information while the code is running, then you may be able to speed things up a bit. Normally, natively compiled code does not do that. Besides that, this is all theoratically speaking. The same argument was used against C: anything you did should be slower than assembly, no? It turned out that compilers won from assembly most of the time: computers are much better in following guidelines and testing for optimum performance than users are.
Besides that, I would not mind spending a bit of time for added reliability and security on 90% of my applications.
"Since few OS services are bridged except those that are fully cross-platform, a Java app cannot fully take advantage of the latest technologies in any OS."
That depends. Some things are enabled automatically. But one of the main points is write-once, run-anywhere. Sure, you can get out of that using JNI, but you may have to rewrite certain bits. On the other hand, how do you know that an application that you write runs smoothly on another machine if you used C++? What if it is an older machine?
In my opinion, the main advantages of Java are the simplicity of the language, the well-documented and largely very understandable API, the availability of a very large repository of usefull components (check out Apache!), the inherent security architecture...the list goes on. Even if you were 100% right on the previous two points, there is enough merit in Java to take it seriously. And if you look at the penetration rate of Java, well, it's HUGE. Mobile phones, smart cards, TIVO's, blu-ray will use Java, embedded devices and of course many businesses that take security and reliability seriously.
I've got a fanless nVidia 6200 based graphics card from ASUS. Together with an ASUS motherboard that is passively cooled, a ASUS psu that has a very large, slow spinning fan and an AMD Athlon. All together about 70 + 65 + 60 + 120 = 315 euro. Throw in a case, a harddrive and a DVD you've got a *very* quiet PC. Unfortunately I bought a WD Raptor to top it all off, so for the first time in, say 5 years, I am able to really hear if my HDD is doing anything without having to look at the stupid hidden lights. And I haven't even closed the lid yet... Haven't trying games yet, but it's lukewarm at most running a linux desktop at 1680x1050 (bragging a bit here, sorry).
Other people seem to buy videocards the same way others buy harley-davidsons...
This article was only insightful at primary school.
Equal rights for animated characters! I nominate professor Utonium as he is the ultimate nice guy, if somewhat naive.
Most of the time, when I try and connect to a server online, the TCP connection to the service is pretty secure. Unless my ISP/telco, who are quite trustworthy, try to break into the session there is no way anybody is even going to see my VNC connection. On the other hand, unless I take special measures, absolutely anyone can attack the VNC service. SSH has quite a bit of overhead, so just saying I have to use that does not make me too happy.
In other words, this can make for a much bigger target for hackers. Even plain text passwords can be pretty secure (as long as they are quite large, and not many can be tried in a short time interval).
Netbeans is not and never was a great IDE. I've tried every version as they came out, and they were always full of bugs, and (more importantly) completely unintuitive. That's why Eclipse is so great, it has many options, but you won't get lost. I do think that the refactoring etc. should be more context sensitive, but that's a specific design choice afaik (keeping the options there for people to find). And I simply hate Swing. I've tried running the Swing demo on my Ubuntu just now, in Gnome L&F, and it whites out the menu's if you select them, even though the background is of a light color and all other apps use black. And the next time I am seeing another non-default file-chooser I am going to screen. Whoops, just clicked one in the Swing demo, YUCK.
Sun is to blame for not getting the support for Java on the desktop. And Microsoft of course. Although I am quite adamount that Sun would have messed this one up none-the-less. They do not always listen to reason.
"need to try it with Motif"
Don't, you will like it even less. It's said to be somewhat faster, but that comes at a horrible cost. Maybe you should try the fox-port of SWT instead.
http://swtfox.sourceforge.net/
Eclipse is running pretty well on the ubuntu 5.10 I must say. I've installed the Sun JDK 1.5 (that's the version we developers still use :) and the latest Eclipse version. I've seen some small idiosyncrasies with GNU classpath, but even that run pretty well. One should not use the default version of Eclipse. Since the installation normally consists of unzipping and running the eclipse binary, you are advised to use the latest version anyway. And I must admit that previous versions were way less responsive. It's still less responsive than Eclipse under Windows, but it definatly is workable.
SWT is far from perfect. It's definately more a hack than Swing, which is setup very neatly. But it does not matter, it's pretty smooth, has very nice widgets and always uses the underlying platform L&F. The Swing default is the Sun look and feel, which is beautifull, but not something I want. On most applications you cannot set the L&F yourself, and the developers choose either Swing L&F, the platform L&F or even worse, AWT. As long as the Swing applications are not in agreement *themselves* and as long as Sun does not make the platform L&F the default, Swing is doomed.
Somehow I feel a strange urge to kill scientists after seeing *that*. And their experiments don't sound too scientific either.
Maybe we should flatten Tibet if it is such a contributor to global warming. Let's create some nice rice-fields and do away with al lthese tiny valeys.
"Is UFO technology something to laugh about?
Yes"
I was with you up to this point.
You probably hit the problem spot on, but since there were many earlier posts stating the same thing, you also missed the boat :)
Well, no, obviously he wasn't at home when they stole the keys. Although I could think of people forgetting to lock their house when they are taking a shower.
I buy more movies on DVD already, now that they have brought down the price to 5..15 euro's here in the Netherlands. So far, only movies I would like to watch a second time at least. New movies are first downloaded in DivX format (no need for DVD quality just yet) and if I like them or want to see the special effects, I buy the DVD. Although it would be much more easy to actually find the movies for the right price using the computer, there is no way I am going to buy them with such restrictive measures. And what's the point, anyone can grab the DVD and make a perfect copy (or, to be precise, a BETTER copy without restrictions, they may remove the main menu and all the extra crap as well)...
I think he meant that he wants to have VIM *anywhere* in the (G)UI, not so much as a seperate editor. Say, for instance, in the slashdot comment box. I know that for the Eclipse (development) environment there is a VI top layer plugin. Maybe you could program it in some sort of OS macro (select all, copy, switch to program, create new buffer, paste, change text and do the same stuff the other way around. As long as it's in insert mode by default, it's fine by me.
The only blue screen that can be in the background noise is my TV switched to a channel that is not available. I don't see this change in the near future, although new TV's sometimes don't let to switch to channels that have no signal.
There are only two important compartments in a modern computer, the processor and the memory. If you need to actually store anything you would need a disk as well. And everything in between those parts. For critical communications a serial port should suffice. It's not that hard to make a computer unsinkable, especially if you make (disk) drivers restartable.
Then again, if you don't have keyboard or mouse access to your laptop because (*&(*^)( the X server has crashed, all this does not matter much. Proper analogy is probably when the steering hut is blown right off the ship. If you are lucky you can get to the engines and do some things from there. But the radar (aka my office document) is probably still out.
PS. can the guy that implemented the cursor in firefox please put up his hand while I try and find my shotgun?
Doesn't Windows Vista do this as well? I know this is not a popular note amongst many, but I believe that this was a feature of Vista as well. Problem with MS today is that it is still rather evil (non-open, at least) but they do seem to be leading on some fronts.
You cannot create buffer overflows if you use the VM. There was once one overflow in the virtual machine, I think, but that's ages ago, and security problems in the VM implementation are pretty rare (the VM itself makes for a pretty small target). Same goes for managed code in .NET.
:)
The chances of creating a security problem in Java are just way less than e.g. unmanaged C++, if only because the language is easier to read/understand. Even the best circus artists will go wrong from time to time. So more and better safety measures are only to be applauded.
Of course, a better programmer never hurts either
You parents don't see the obvious: the computer should not execute the program (without warning) even if the extension is .exe (or .sh or chmod +x). Most people don't want to run executables they have not installed. The base setting of windows is that regular users cannot install applications, but they can put applications almost anywhere, and they sure as hell can run regular .exe's. This is great for portable firefox, but it leaves a huge security hole.
A lot of these things are being addressed. There will also be better terminal handling and stuff. But the main thing about Java is that it should run on most platforms without modification. That said, if you want such a platform specific thing, there is nobody stopping you to do it yourself. Just use the "native" keyword and program it in a language that can create .dll's or .so files. Or just execute an executable and processing the output. This is not that hard to do, and quite alright, as long as you remember that it is platform specific. You might want to make it an optional part of your program though (if only to get it Java certified).
Users never care about languages. They care about applications that make a computer a usefull asset. Currently, I am in the (slow) process of writing an open source Java binary newsreader. Maybe you would care about that. Azureus, the popular bittorrent client is written in Java. Maybe you need that. And maybe you would want to install an application server to serve a nice Java application, although the PHP market seems to be bigger than the Java market for such applications for now.
Java is used a *lot* by enterprise customers to write very stable systems, with a web-front end or without. Linux is still used a lot as an enterprise system. Easier, or default installs would certainly help a lot. Currently, even if there is Java installed, the version is too old most of the time in my experience.