Posted by
Hemos
on from the learning-more-about-hjava dept.
Def Mango Raygun writes "There is an interview with James Gosling of Sun. He talks about some language features and why they happened. It's short, but informative"
more information
by
flynt
·
· Score: 5, Informative
James has a homepage here, for your perusal. There are some really interesting things on it, like the fact he is Canadian and likes pies in Bill Gate's face to name a few.
Re:Decimal arithmetic
by
Steveftoth
·
· Score: 3, Informative
Use the BigDecimal class. It's standard and handles any size floating point numbers. Not quite as good as the Cobol version, but you can always write your own class if you are that picky.
Sorry, Java is more based on C then on Cobol.
Related information
by
sisukapalli1
·
· Score: 4, Informative
The interview was very short and I did not find much information. Here are some related links:
http://www.computerworld.com/storyba/0,4125,NAV4 7_ STO69691,00.html -- on.NET and J2EE
Gosling on netbeans -- (03/2002) http://www.netbeans.org/articles/interv iews/james_ gosling.html
An old interview from 2000 -- more on java http://www.devx.com/judgingjava/articles/gosling/d efault.asp
Another from 1999 -- http://www-106.ibm.com/developerworks/features/g os ling/
S
If you want good realtime with java...
by
MiddleHitter
·
· Score: 2, Informative
jdk's realtime isn't all that great, and is easily run awry. For great realtime java, check out NewMonics.
It runs on linux too!
I may be a little biased though...
-- I don't fear computers, I fear the lack of them. -I. Asimov
Java code generation
by
descubes
·
· Score: 3, Informative
JDC: I'd like to see more tools that enhance developer productivity, we have Unified Modeling Language (UML) modeling tools, and wizards to help us generate code. Can we tie these together better?
Another way to enhance productivity is to manipulate the Java source code itself (rather than generate code from the outside.) A good example of tool doing just that is Moka. In short, Moka is a Java-to-Java translator which allows you to extend Java in many interesting ways. For instance, there is a plug-in that allows you to remove any method or class whose name begins with 'debug'. There are other examples on the web page. I believe it's easy to use, and it makes up for various shortcomings of the language itself.
-- --
Did you try Tao3D? http://tao3d.sourceforge.net
JavaWorld story
by
lseltzer
·
· Score: 5, Informative
Sun's announcement that they were withdrawing from the ECMA process was in December '99.
The March 2000 JavaWorld has an interview with ECMA officials that, as Gosling says, makes for interesting reading:
ECMA responded by chastising Sun for causing an "enormous waste of experts' time and companies' money." In an interview today, a top ECMA official said Sun's criticisms of the group are merely a smokescreen for its real motives for ending the relationship.
"They just don't want to give up control" of Java, said Jan van den Beld, secretary-general of ECMA. "It is 100 percent my opinion that Sun is publicly saying they want to make Java a standard, but privately not making it happen."
Re:Decimal arithmetic
by
Anonymous Coward
·
· Score: 1, Informative
BigDecimal IS fixed point artihmetic.
Java does not have a built-in arbitrary precision rational type. You could make one in 2-3 minutes though. No, it doesn't matter that it's not built-in because there's no helpful static optimizations you can do to make it faster. That's also why I chuckled at your "native data type in Common Lisp" since that's meaningless as a feature unless you've got hardware support for rational storage.
Re:Java features
by
ZeroConcept
·
· Score: 3, Informative
1) Integer and String classes are inmutable, their value cannot be changed.
2) I Agree with this, but some people argue that you should use the return value or create your own mutable wrapper of int.
3) Try using Inner classes. I like the idea of the filename matching the classname as it makes it easier to browse trough code and reduces source control conflicts.
Re:Java features
by
SimonK
·
· Score: 4, Informative
Why are classes like Integer so weird?
Because they're an afterthought. Java was originally designed without the primitive equivalent reference types and they were tacked on later to solve some problems which emerged. Basically, the problem was that there was no type that included both Object and the primitive types, which made reflection and collections hard to deal with.
The original decision not to make the primitives objects is one of the Great Mysteries of All Time. Sun say its for "efficiency reasons", but Java's antecedent languages (Smalltalk, Lisp, etc) solved the same problem using type tags, so primtives look like objects even though they are implemented differently, and indeed the best VMs actually do this internally for other reasons.
Essentially, its a mistake, IMHO.
Several times I got caught on the fact that there is no way to pass an int by reference. And I don't like Integer (see aboive)...
Java's basically an OO language. You can use it in non-OO ways, but you tend to run into problems like this. Basically, if you want to return more than one value from a method, you should probably group them together in their own class. If you want to use the return value to return an error code, you should learn about exception.
I program in Java every day, and the inability to return multiple values is not a problem for me in practice.
One (public) class per file.
.class files act as header files as well as binaries. In order to preserve the sanity of programmers, the compiler builds any unbuilt sources. To do that it has to find them. Hence the "file must have the name of the public class" rule.
1. Java is slow just to piss off people who worry that any scroll speed short of "the Flash on Steroids" is too slow. People who do real work and don't just run benchmarks all day don't notice.
2. They're not upset; that's the sound of Java developers rolling around in the large piles of money they make writing software that people actually use.
3. Because it's easier to nitpick the best product than it is to find all of the memory leaks and bad pointer refs in the C++ code written by l33t hax0rs.
4. Yes; if you can amuse your inferiors at no cost to yourself, why not bring some joy into their sad lives?
-jon
--
Remember Amalek.
Re:Does Java use Pointers?
by
Anonymous Coward
·
· Score: 3, Informative
The equivilent code in java would be: Integer a = NULL; int b = a.toInt();
Java uses references, not pointers. The difference is twofold: one, if you attempt to dereference a null pointer in java using the code above, you get a well-handled exception which either launches an error routine defined by the programmer or causes the program to terminate politely (as opposed to the messy crash you will get if you pull this in C++). Secondly you cannot do math with references-- with a reference, you can point it to something another reference already points to, or you can point it to a new object, or you can point it to NULL. With a pointer, you can just point it to any old thing anywhere in memory, or even just iterate over memory like the code at the top of this post does, and when you read the any-old-thing in question you'll just get garbage-- but your program will *think* it's reading a valid value, and operate on the garbage as if it was something important. Sometimes this results in catastrophe.
The downside to java's way of doing things is it's a bit simplistic-- you cannot have references to ints, floats, or other "base types" unless you put them inside a "wrapper object". This simplifies coding and reading but is a bit limiting at times.
Note, for the record, in C++, the term "null pointer" generally refers to any pointer that points to garbage-- in practice it doesn't always refer to NULL, which is memory address 0. Perhaps you should read some of the other documents on the "everything2" site i link above-- it has lots of good definitions of things. Hopefully that helps a little:)
super ugly ultraman
Re:What the heck is autoboxing?
by
Steveftoth
·
· Score: 4, Informative
Autoboxing is a process where primitives are automagically converted to Objects (and back). It's a language change so that you would have to write new code to use it. Basically you could say.... int i = 2,j=1; Integer result = Math.max( i,j); and it would magically convert the result of the Math.max to an integer. Or if the Math.max took Integers instead of ints, it would create Integers for you. The details need to be worked out because as of right now, an Integer is unmodifiable and things like i == result would be problematic. Since == tests equality, but it only works with objects if they are actually the same reference. You can't do i.equals( result ) Also, what if you do int i= 2; Integer j=i, k=j; ++j; If you are using object semantics, then k should probably be changed to reflect the new value of j, since j and k both point to the same object. It comes down to, should the value of j change? or the value of the object that it represents?
ARM and others do this already
by
theolein
·
· Score: 2, Informative
ARM's jazelle core and others (do a google search or go to SUN's website) do this and supposedly it is already being implemented by mobile phone makers.
Re:Java features
by
Anonymous Coward
·
· Score: 1, Informative
How the hell did this get modded insightful? This is in no way a classloader problem and would not be helped by using a jar. The complaint was about multiple public class definitions in a _source_ file which is more a design decision to promote good programming style than anything else.
Java and good design
by
theolein
·
· Score: 2, Informative
Go there and take a look at least. It's a java gamin g site on the basis of applets. Register (horror!) and take a look at the games. There are two 3D games last time I looked and a host of single and multiplayer tetris, galaxis and backgammon knockoffs etc.
This site is very interesting for a number of reasons:
1.It is immensely popular. When you play a game a window of all the other users online at the time pops up, and it blew me over to be honest. 2.The games look extremely good visually, are based on simple premises that make them adictive and are playable even on slower hardware. 3.It works best in Explorer's MS JVM of all things. JDK1.2 Browsers are not supported well and don't even work in some cases. This raises the question as to where they will go now that MS has dropped having it's own JVM in XP?
Go here and see what you can do with a well written ava 3D engine that needs no hardware acceleration. Take note of the site design. It makes an impression on consumers.
James has a homepage here, for your perusal. There are some really interesting things on it, like the fact he is Canadian and likes pies in Bill Gate's face to name a few.
Use the BigDecimal class. It's standard and handles any size floating point numbers. Not quite as good as the Cobol version, but you can always write your own class if you are that picky.
Sorry, Java is more based on C then on Cobol.
The interview was very short and I did not find much information. Here are some related links:
4 7_ STO69691,00.html -- on .NET and J2EE
v iews/james_ gosling.html
d efault.asp
g os ling/
http://www.computerworld.com/storyba/0,4125,NAV
Gosling on netbeans -- (03/2002)
http://www.netbeans.org/articles/inter
An old interview from 2000 -- more on java http://www.devx.com/judgingjava/articles/gosling/
Another from 1999 --
http://www-106.ibm.com/developerworks/features/
S
It runs on linux too!
I may be a little biased though...
I don't fear computers, I fear the lack of them. -I. Asimov
JDC: I'd like to see more tools that enhance developer productivity, we have Unified Modeling Language (UML) modeling tools, and wizards to help us generate code. Can we tie these together better?
Another way to enhance productivity is to manipulate the Java source code itself (rather than generate code from the outside.) A good example of tool doing just that is Moka. In short, Moka is a Java-to-Java translator which allows you to extend Java in many interesting ways. For instance, there is a plug-in that allows you to remove any method or class whose name begins with 'debug'. There are other examples on the web page. I believe it's easy to use, and it makes up for various shortcomings of the language itself.
-- Did you try Tao3D? http://tao3d.sourceforge.net
The March 2000 JavaWorld has an interview with ECMA officials that, as Gosling says, makes for interesting reading:
"They just don't want to give up control" of Java, said Jan van den Beld, secretary-general of ECMA. "It is 100 percent my opinion that Sun is publicly saying they want to make Java a standard, but privately not making it happen."
BigDecimal IS fixed point artihmetic.
Java does not have a built-in arbitrary precision rational type. You could make one in 2-3 minutes though. No, it doesn't matter that it's not built-in because there's no helpful static optimizations you can do to make it faster. That's also why I chuckled at your "native data type in Common Lisp" since that's meaningless as a feature unless you've got hardware support for rational storage.
1) Integer and String classes are inmutable, their value cannot be changed.
2) I Agree with this, but some people argue that you should use the return value or create your own mutable wrapper of int.
3) Try using Inner classes. I like the idea of the filename matching the classname as it makes it easier to browse trough code and reduces source control conflicts.
Why are classes like Integer so weird?
Because they're an afterthought. Java was originally designed without the primitive equivalent reference types and they were tacked on later to solve some problems which emerged. Basically, the problem was that there was no type that included both Object and the primitive types, which made reflection and collections hard to deal with.
The original decision not to make the primitives objects is one of the Great Mysteries of All Time. Sun say its for "efficiency reasons", but Java's antecedent languages (Smalltalk, Lisp, etc) solved the same problem using type tags, so primtives look like objects even though they are implemented differently, and indeed the best VMs actually do this internally for other reasons.
Essentially, its a mistake, IMHO.
Several times I got caught on the fact that there is no way to pass an int by reference. And I don't like Integer (see aboive)...
Java's basically an OO language. You can use it in non-OO ways, but you tend to run into problems like this. Basically, if you want to return more than one value from a method, you should probably group them together in their own class. If you want to use the return value to return an error code, you should learn about exception.
I program in Java every day, and the inability to return multiple values is not a problem for me in practice.
One (public) class per file.
.class files act as header files as well as binaries. In order to preserve the sanity of programmers, the compiler builds any unbuilt sources. To do that it has to find them. Hence the "file must have the name of the public class" rule.
2. They're not upset; that's the sound of Java developers rolling around in the large piles of money they make writing software that people actually use.
3. Because it's easier to nitpick the best product than it is to find all of the memory leaks and bad pointer refs in the C++ code written by l33t hax0rs.
4. Yes; if you can amuse your inferiors at no cost to yourself, why not bring some joy into their sad lives?
-jon
Remember Amalek.
for(int *p=0;;*(p++)=0);
:)
The equivilent code in java would be:
Integer a = NULL;
int b = a.toInt();
Java uses references, not pointers. The difference is twofold: one, if you attempt to dereference a null pointer in java using the code above, you get a well-handled exception which either launches an error routine defined by the programmer or causes the program to terminate politely (as opposed to the messy crash you will get if you pull this in C++). Secondly you cannot do math with references-- with a reference, you can point it to something another reference already points to, or you can point it to a new object, or you can point it to NULL. With a pointer, you can just point it to any old thing anywhere in memory, or even just iterate over memory like the code at the top of this post does, and when you read the any-old-thing in question you'll just get garbage-- but your program will *think* it's reading a valid value, and operate on the garbage as if it was something important. Sometimes this results in catastrophe.
The downside to java's way of doing things is it's a bit simplistic-- you cannot have references to ints, floats, or other "base types" unless you put them inside a "wrapper object". This simplifies coding and reading but is a bit limiting at times.
Note, for the record, in C++, the term "null pointer" generally refers to any pointer that points to garbage-- in practice it doesn't always refer to NULL, which is memory address 0. Perhaps you should read some of the other documents on the "everything2" site i link above-- it has lots of good definitions of things. Hopefully that helps a little
super ugly ultraman
Autoboxing is a process where primitives are automagically converted to Objects (and back). It's a language change so that you would have to write new code to use it. Basically you could say....
int i = 2,j=1;
Integer result = Math.max( i,j);
and it would magically convert the result of the Math.max to an integer. Or if the Math.max took Integers instead of ints, it would create Integers for you.
The details need to be worked out because as of right now, an Integer is unmodifiable and things like
i == result
would be problematic. Since == tests equality, but it only works with objects if they are actually the same reference. You can't do
i.equals( result )
Also, what if you do
int i= 2;
Integer j=i, k=j;
++j;
If you are using object semantics, then k should probably be changed to reflect the new value of j, since j and k both point to the same object. It comes down to, should the value of j change? or the value of the object that it represents?
ARM's jazelle core and others (do a google search or go to SUN's website) do this and supposedly it is already being implemented by mobile phone makers.
How the hell did this get modded insightful? This is in no way a classloader problem and would not be helped by using a jar. The complaint was about multiple public class definitions in a _source_ file which is more a design decision to promote good programming style than anything else.
minatrix.com
Go there and take a look at least. It's a java gamin g site on the basis of applets. Register (horror!) and take a look at the games. There are two 3D games last time I looked and a host of single and multiplayer tetris, galaxis and backgammon knockoffs etc.
This site is very interesting for a number of reasons:
1.It is immensely popular. When you play a game a window of all the other users online at the time pops up, and it blew me over to be honest.
2.The games look extremely good visually, are based on simple premises that make them adictive and are playable even on slower hardware.
3.It works best in Explorer's MS JVM of all things. JDK1.2 Browsers are not supported well and don't even work in some cases. This raises the question as to where they will go now that MS has dropped having it's own JVM in XP?
sumea
Go here and see what you can do with a well written ava 3D engine that needs no hardware acceleration. Take note of the site design. It makes an impression on consumers.