Isn't Terraserver running on Microsoft "technology"?
Yes, it was supposed to prove how scalable some component (which one exactly I can't remember.. SQL Server maybe) of Microsoft's technology is. Of course it never worked as advertised. When it was first announced it bombed, and now it has bombed again when Slashdot linked to it.
I mean really.. putting a link to a server running Windows on Slashdot front page.. what were the editors thinking??! Did they perhaps think the "technology" would be able to take the strain? Geesh...
There's an article on JavaWorld how to do this using JSP. I have no idea how PHP works, but maybe the same ideas apply.
Re:Java will find a limited niche
on
Swing
·
· Score: 2
We aren't, so I'll stick to my premise that in any market for software (even internal), performance always wins.
My personal experience certainly doesn't support your claim. I'd say that in most cases, it is the functionality that wins. It doesn't matter if the thing works slightly slower today, just as long as it works! And just as long as it doesn't bring down the application or machine that's running it.
Functionality is the key. Java can bring a lot of functionality in a quite short development time and most of the time quite safely (in other words, no dangling pointers that crash the application.. exceptions still get there and can, and sometimes do, cause trouble but they can all be caught, logged and debugged with a lot less effort than random pointer bugs).
It's quite rare that I've seen performance being the first thing required... on the top of my head I can only think of one compiler project that was running on some old VAX machines as a batch during the night and had to squeeze every bit of performance out of those trusty work horses. Other than that, it has always been about functionality.
A quick look at the API collection that Java offers reveals why it is a winner.
but some of the Scandinavian languagues use the shift- to enter accented characters and the like. So to enter "normal" punctuation like % $ & ^ you need to use the alt key.
Scandinavian keyboards use Alt Graph to enter @£${[]}\~ keys. Its not the same key as Alt.
if you look at any modern PC keyboard, you're unlikely to see alt and alt-gr.
This is NOT true. All the keyboards I've seen have Alt Graph. The reason is mentioned above. I need it to type.
I can't remember the last time I saw an app that uses alt-gr as anything other that alt.
All mine do, I have different functionality in Alt and Alt Graph. Its OS specific. Applications don't have to worry about it.
I sincerely doubt its possible to detect the difference between alt and alt-gr.
You can detect the difference between Alt and Alt-Gr just as easily (or not easily, depends on your expereince, tool in use, etc.) as you can detect difference between enter and return. It's a low level job. It's not impossible. At all.
In KeyEvent class: public static final int VK_ALT
public static final int VK_ALT_GRAPH
There you go. Two different keys.
If you don't like this decision: tough! is the message...
It can be done just as easily as it can be done to Alt and Alt Graph keys. If there's a real need for differentiating Enter and Return, just ask for it. It's not that big a deal.
I found patterns useful because they are solutions to problems... problems that reoccur in many, many software projects. So instead of having to find myown way of solving the said problem (again) I can pick up my catalog of design patterns, see if any of them fits the problem I have at hand, check what forces and counter forces (for example, scalability vs. efficiency) a particular pattern may be affected by.
Patterns are solutions that have gone through a process of extensive peer review, therefore they tend to be elegant and simple, and just save me a ton of time and several headaches.
So if you're using a computer that needs alt (or option on a Mac) to enter certain characters, then you can't enter the character that alt-s sends into a mail message, because it will always be interpretted by Java Look and Feel as the mnemomic for send. (whoops, there goes a half written message).
Hmm, well my keyboard has 2 different alt keys, ALT and ALT GRAPH. Some of the older JVM's didn't handle the OEM keys correctly and didn't differentiate between the two alt keys. The newer ones work fine.
The single biggest screw up in the Java L&F is the insistence that the alt key must be used for shortcuts. You cannot override this in your application.
This is incorrect. The Java Foundation Classes themselves do not support other shortcuts but ALT+key, but the framework is very easy to extend by using the normal methods of OOP.
Check out jEdit for example. Most of its shortcuts are CTRL+key and many are behind two control keys, like CTRL+e CTRL+x.
Framework does not support it, but it doesn't mean it can't be extended to support it.
Isn't executing juveniles a violation of human rights as well? Yes I thought so: 5.Sentence of death shall not be imposed for crimes committed by persons below eighteen years of age and shall not be carried out on pregnant women.
Yet, in 24 US states people can be sentenced to death for crimes committed when they were children.
And look, my favorite country, Finland, has found its way on Amnesty pages as well.
"Holier than thou" attitude gets you nowhere. We all have room for improvement, not just China.
"An evil deed is not redeemed by an evil deed of retaliation. Justice is never advanced in the taking of human life. Morality is never upheld by legalized murder."
Hmm, wasn't Stanford the university Sun got their base for HotSpot technology as well? Could there be a connection here between MAJC's Space Time computing and the fact they're relying on dynamic (or just-in-time) compilation?
I don't know much anything about processor design, but this article was easy enough for even me to read. It's all very fascinating..
Especially I liked the concept of Space-Time Continu.. err Computing, which allows the processor to spawn a speculative instruction stream in case of the main execution stream is working on a loop, or what not. This speculative instruction stream can run ahead, and after the main execution stream gets its job done, both of them can join (possibly, I'll assume this is not always the case). The speculative execution stream can be given to a whole another processing unit in case of a processor cluster (it seems the idea is that there are several MAJC processors per die, mmm, truly parallel threads).
Clustering MAJC processors in a single die makes some interesting prospects for threads. One MAJC processor has enough registers for holding the contexts of four different threads at once (according to the author). This should make some real difference regarding context switches.
Microsoft has "partnered" with Transvirtual and funded Microsoft technologies to be added to Kaffe. I consider this a strong action on Microsoft's part that they consider Kaffe a very important Open Source project. Come on now, any time Microsoft don't try to destroy competition, there must be something special about it
Kaffe doesnt even support Java 2, and I've yet to hear anyone have any success running complex Java 1.1 applications with Kaffe either.
So I would hardly describe it as an OSS project "no one would consider replacing with a closed one." I've yet to find a reason to give up a closed JVM to even start considering Kaffe. Microsoft or no Microsoft.
IMHO the design of OP pays a lot more attention to source code readability than the design of C++ does.
Ok, I tend to agree with this somewhat. I just don't think OP does it enough. Too much of the burden of its Pascal roots. IMHO.
For the property declaration syntax, Property MyPropertyName: TMyType read MyGettorMethod write MySettorMethod; IMHO it is a thing of beauty and a joy forever.
Matter of personal taste, for sure. But earlier in your message you defined "syntactic sugar" as "something that looked nice and read well, but actually didn't contribute any functionality. [...] It just looks cuter.".
Now if I've already designed the field for my object, and made the necessary accessors to modify it, what added functionality does the property declaration syntax offer? Isn't this just syntactic sugar? It looks cute...
It looks cute, but for sure, to most people having their first encounters with OP, it will cause the reaction of "oh sh*t, what the heck is going on here?!". And after that starts the frantic searching of the OP manual.
An elegant language tries to avoid these unnecessary searches to the manual as much as possible. IMHO.
I have reviewed code and seen the same procedure attached to 10 different forms, when it could just as easily been written once as a free-standing function in it's own code unit. So many "programmers" (who probably learned their tricks on VB) have barely come to grips with procedural programming, let alone OO. You may think that this is the exception, but after many code reviews I can assure you that it is not. VB is IMHO to blame for a lot of this.
I've not only seen code like what you describe, I have to live with it almost daily. And it was written in Delphi. Now I do know that the original author wasn't just a disgruntled user of VB, forced to the Delphi environment, but was using Delphi by his own choice, and liking it.
It didn't make his code very nice to read or easy to maintain though.
So I don't tend to just blame VB on this. I tend to blame any environment that lets you get away with drag and drop without ever paying attention to the design of your application. I blame the paradigm of user interface centered design. And to me, it was quite revealing to see that Delphi does not ease people's way into the OO world, or require they make that leap. It doesn't even require you to be very good at the ole procedural programming.
The use of OP in Delphi doesn't automatically lead to maintainable code, at least when used by your average enterprise programmer. And as long as people can get away without actually learning to program, I don't see this changing. And I blame Delphi for that as much as VB (well, I don't blame VB, cause I'm not forced to deal with that, but the people on the other side of the office do...)
A lot of people take the "all or nothing" approach to C++, but it wasn't designed to be used that way. Use what you need, and forget about the rest.
Hmm, I don't see this as that simple an issue.
There are things in C++ I'd rather people not use or even know about. So can I just forget them? Of course not.
This is how it usually goes. You end up inheriting code from somewhere or someone. You need to maintain it, or maybe further develop it, or whatever. But the people who first wrote it, used those things you don't want to know about.
So do I just forget them? No. I have to live with them. Either that, or rewrite the whole thing.
So you just can't "forget" a feature exists in a language. You'll have to learn it, know it, and live with it. Like it or not. Software and especially source code lives a long time. And all the not-so-nice things live with it.
However, if I was faced with a choice of doing a very large project either in C or C++, I might still be inclined to pick C++ and try very very carefully to use very limited set of its features. Just having real objects around when designing a large software project is really worth it. But that's only if the only alternatives were C and C++.
So what exactly is the licensing restriction that stops Kaffe from having Swing?
Isn't Terraserver running on Microsoft "technology"?
Yes, it was supposed to prove how scalable some component (which one exactly I can't remember.. SQL Server maybe) of Microsoft's technology is. Of course it never worked as advertised. When it was first announced it bombed, and now it has bombed again when Slashdot linked to it.
I mean really.. putting a link to a server running Windows on Slashdot front page.. what were the editors thinking??! Did they perhaps think the "technology" would be able to take the strain? Geesh...
There's an article on JavaWorld how to do this using JSP. I have no idea how PHP works, but maybe the same ideas apply.
We aren't, so I'll stick to my premise that in any market for software (even internal), performance always wins.
My personal experience certainly doesn't support your claim. I'd say that in most cases, it is the functionality that wins. It doesn't matter if the thing works slightly slower today, just as long as it works! And just as long as it doesn't bring down the application or machine that's running it.
Functionality is the key. Java can bring a lot of functionality in a quite short development time and most of the time quite safely (in other words, no dangling pointers that crash the application.. exceptions still get there and can, and sometimes do, cause trouble but they can all be caught, logged and debugged with a lot less effort than random pointer bugs).
It's quite rare that I've seen performance being the first thing required... on the top of my head I can only think of one compiler project that was running on some old VAX machines as a batch during the night and had to squeeze every bit of performance out of those trusty work horses. Other than that, it has always been about functionality.
A quick look at the API collection that Java offers reveals why it is a winner.
but some of the Scandinavian languagues use the shift- to enter accented characters and the like. So to enter "normal" punctuation like % $ & ^ you need to use the alt key.
Scandinavian keyboards use Alt Graph to enter @£${[]}\~ keys. Its not the same key as Alt.
if you look at any modern PC keyboard, you're unlikely to see alt and alt-gr.
This is NOT true. All the keyboards I've seen have Alt Graph. The reason is mentioned above. I need it to type.
I can't remember the last time I saw an app that uses alt-gr as anything other that alt.
All mine do, I have different functionality in Alt and Alt Graph. Its OS specific. Applications don't have to worry about it.
I sincerely doubt its possible to detect the difference between alt and alt-gr.
You can detect the difference between Alt and Alt-Gr just as easily (or not easily, depends on your expereince, tool in use, etc.) as you can detect difference between enter and return. It's a low level job. It's not impossible. At all.
In KeyEvent class:
public static final int VK_ALT
public static final int VK_ALT_GRAPH
There you go. Two different keys.
If you don't like this decision: tough! is the message...
It can be done just as easily as it can be done to Alt and Alt Graph keys. If there's a real need for differentiating Enter and Return, just ask for it. It's not that big a deal.
ERROR 312 -- Cannot connect to the server
See? All you Linux and Solaris users just DoS'ed this fine publication. Damn you!
No problems here on Linux + netscape.
Maybe there's something else wrong with your setup?
Is this an American thing?
No, it is not.
I found patterns useful because they are solutions to problems... problems that reoccur in many, many software projects. So instead of having to find myown way of solving the said problem (again) I can pick up my catalog of design patterns, see if any of them fits the problem I have at hand, check what forces and counter forces (for example, scalability vs. efficiency) a particular pattern may be affected by.
Patterns are solutions that have gone through a process of extensive peer review, therefore they tend to be elegant and simple, and just save me a ton of time and several headaches.
YMMV
So if you're using a computer that needs alt (or option on a Mac) to enter certain characters, then you can't enter the character that alt-s sends into a mail message, because it will always be interpretted by Java Look and Feel as the mnemomic for send. (whoops, there goes a half written message).
Hmm, well my keyboard has 2 different alt keys, ALT and ALT GRAPH. Some of the older JVM's didn't handle the OEM keys correctly and didn't differentiate between the two alt keys. The newer ones work fine.
Is this the problem you're talking about?
The single biggest screw up in the Java L&F is the insistence that the alt key must be used for shortcuts. You cannot override this in your application.
This is incorrect. The Java Foundation Classes themselves do not support other shortcuts but ALT+key, but the framework is very easy to extend by using the normal methods of OOP.
Check out jEdit for example. Most of its shortcuts are CTRL+key and many are behind two control keys, like CTRL+e CTRL+x.
Framework does not support it, but it doesn't mean it can't be extended to support it.
Oh my god, it's NOKE!
ack!
Kerg
All operating systems have security holes. Before their release, and after they've been released. So that doesn't make W2K anything special.
I guess the only interesting question is how quickly will Microsoft patch these holes, and how well do they do it.
I've met many people from behind the Iron Curtain (e.g.: Russia, Romania, etc), not ONE would rather live in communism--most hated it.
So how come the Communist party in Russia still has presence in the Duma? I mean, someone must have voted them there, no?
And capitalism doesn't?
Isn't executing juveniles a violation of human rights as well? Yes I thought so:
5.Sentence of death shall not be imposed for crimes committed by persons below eighteen years of age and shall not be carried out on pregnant women.
Yet, in 24 US states people can be sentenced to death for crimes committed when they were children.
And look, my favorite country, Finland, has found its way on Amnesty pages as well.
"Holier than thou" attitude gets you nowhere. We all have room for improvement, not just China.
Visit:
United Nations Agreements on Human Rights
Amnesty International
"An evil deed is not redeemed by an evil deed of retaliation. Justice is never advanced in the taking of human life. Morality is never upheld by legalized murder."
Hmm, wasn't Stanford the university Sun got their base for HotSpot technology as well? Could there be a connection here between MAJC's Space Time computing and the fact they're relying on dynamic (or just-in-time) compilation?
Curious.
It seems to me that SGI is the drowning company here, not Sun. SGI last month reported losses much worse than expected (37 cents per share, when the street expected only 7 cents per share) and recently Sun announced workstat ion aimed directly at SGI's market (visualization and simulation).
I don't know much anything about processor design, but this article was easy enough for even me to read. It's all very fascinating..
Especially I liked the concept of Space-Time Continu.. err Computing, which allows the processor to spawn a speculative instruction stream in case of the main execution stream is working on a loop, or what not. This speculative instruction stream can run ahead, and after the main execution stream gets its job done, both of them can join (possibly, I'll assume this is not always the case). The speculative execution stream can be given to a whole another processing unit in case of a processor cluster (it seems the idea is that there are several MAJC processors per die, mmm, truly parallel threads).
Clustering MAJC processors in a single die makes some interesting prospects for threads. One MAJC processor has enough registers for holding the contexts of four different threads at once (according to the author). This should make some real difference regarding context switches.
Fascinating stuff.
They've been around for a decade. Shouldn't we start noticing *SOMETHING* is wrong, already?
Microsoft has "partnered" with Transvirtual and funded Microsoft technologies to be added to Kaffe. I consider this a strong action on Microsoft's part that they consider Kaffe a very important Open Source project. Come on now, any time Microsoft don't try to destroy competition, there must be something special about it
Kaffe doesnt even support Java 2, and I've yet to hear anyone have any success running complex Java 1.1 applications with Kaffe either.
So I would hardly describe it as an OSS project "no one would consider replacing with a closed one." I've yet to find a reason to give up a closed JVM to even start considering Kaffe. Microsoft or no Microsoft.
Kaffe
[...]open source applications that no one would consider replacing with closed clones.
Oh, this has got to be a joke.
Ok, I tend to agree with this somewhat. I just don't think OP does it enough. Too much of the burden of its Pascal roots. IMHO.
For the property declaration syntax, Property MyPropertyName: TMyType read MyGettorMethod write MySettorMethod; IMHO it is a thing of beauty and a joy forever.
Matter of personal taste, for sure. But earlier in your message you defined "syntactic sugar" as "something that looked nice and read well, but actually didn't contribute any functionality. [...] It just looks cuter.".
Now if I've already designed the field for my object, and made the necessary accessors to modify it, what added functionality does the property declaration syntax offer? Isn't this just syntactic sugar? It looks cute...
It looks cute, but for sure, to most people having their first encounters with OP, it will cause the reaction of "oh sh*t, what the heck is going on here?!". And after that starts the frantic searching of the OP manual.
An elegant language tries to avoid these unnecessary searches to the manual as much as possible. IMHO.
I have reviewed code and seen the same procedure attached to 10 different forms, when it could just as easily been written once as a free-standing function in it's own code unit. So many "programmers" (who probably learned their tricks on VB) have barely come to grips with procedural programming, let alone OO. You may think that this is the exception, but after many code reviews I can assure you that it is not. VB is IMHO to blame for a lot of this.
I've not only seen code like what you describe, I have to live with it almost daily. And it was written in Delphi. Now I do know that the original author wasn't just a disgruntled user of VB, forced to the Delphi environment, but was using Delphi by his own choice, and liking it.
It didn't make his code very nice to read or easy to maintain though.
So I don't tend to just blame VB on this. I tend to blame any environment that lets you get away with drag and drop without ever paying attention to the design of your application. I blame the paradigm of user interface centered design. And to me, it was quite revealing to see that Delphi does not ease people's way into the OO world, or require they make that leap. It doesn't even require you to be very good at the ole procedural programming.
The use of OP in Delphi doesn't automatically lead to maintainable code, at least when used by your average enterprise programmer. And as long as people can get away without actually learning to program, I don't see this changing. And I blame Delphi for that as much as VB (well, I don't blame VB, cause I'm not forced to deal with that, but the people on the other side of the office do...)
A lot of people take the "all or nothing" approach to C++, but it wasn't designed to be used that way. Use what you need, and forget about the rest.
Hmm, I don't see this as that simple an issue.
There are things in C++ I'd rather people not use or even know about. So can I just forget them? Of course not.
This is how it usually goes. You end up inheriting code from somewhere or someone. You need to maintain it, or maybe further develop it, or whatever. But the people who first wrote it, used those things you don't want to know about.
So do I just forget them? No. I have to live with them. Either that, or rewrite the whole thing.
So you just can't "forget" a feature exists in a language. You'll have to learn it, know it, and live with it. Like it or not. Software and especially source code lives a long time. And all the not-so-nice things live with it.
However, if I was faced with a choice of doing a very large project either in C or C++, I might still be inclined to pick C++ and try very very carefully to use very limited set of its features. Just having real objects around when designing a large software project is really worth it. But that's only if the only alternatives were C and C++.
if (blah.equals("bob"))
:)
And if you do:
if ( ("bob").equals(blah) )
instead, you'll save yourself from an unwanted NullPointerException
I give in :)
Common Lisp has a fascinating way of doing OOP. And very dynamic.
Maybe it does prove that only the worst languages survive after all (witness VB 8^)