The Mono FAQ addresses this question and refers to an e-mail from Jim Miller of Microsoft. The e-mail says:
Beppe,
As one of the inventors on that patent as well as the person heading up the standardization efforts for the CLI, I'd like to explain why I've never felt the two are in conflict.
The ECMA process requires that all patents held by member companies that are essential for implementing its standards are available under "reasonable and non-discriminatory (RAND) terms" for the purpose of implementing those Standards. This is the normal condition used in all International Standards organizations, including both ECMA and ISO.
But Microsoft (and our co-sponsors, Intel and Hewlett-Packard) went further and have agreed that our patents essential to implementing C# and CLI will be available on a "royalty-free and otherwise RAND" basis for this purpose.
Furthermore, our release of the Rotor source code base with a specific license on its use gives wide use to our patents for a particular (non-commercial) purpose, and as we explicitly state we are open to additional licenses for other purposes.
First, to be honest, I much prefer the King Isaac version.
"In the beginning, God created X, and X was without function. And God said, "Let there be f(X)!" and there was f(X). And God created Y to hold the f(X) and saw that it was good."
"And the serpent said unto Eve, 'has God told you that you may divide by any number in the garden?' And she replied unto him, 'By any number of the garden we may divide, but the by the zero in the center of the garden we must not divide, lest we die.' Then the serpent said unto her, 'You will not die. God knows that if you divide by the zero, you will become a Math professor and will become like God, or at least think you are.'
"And thus it is written that a Sine shall leave his mother, and a Cosine shall leave their home, and the two of them squared shall be as one."
Really, if you had done any work with Java at all, you would see that you do indeed have these powers..
walk on water... Take your bloated code and use it as floats for your feet - you're walking on water
fly high into the sky Stand on top of the heap and start your program - you'll be high in the air in no time.
pass through walls Java uses pass-by-value, so you must convert yourself into something of value. I recommend having your face printed on currency and then slip yourself through a seam in the drywall. I don't recommend using dollars, however, since the $$$'s make it look like you're using Perl
understand any language without an interpreter This comes up in every Java-related thread on here. Early Java was interpreted, but now we have Just-In-Time compilers, not to mention traditional compilers like gcj.
Even some of the modern translations, supposedly based on what we think are the most accurate and usually oldest sources, still reflect some cultural biases.
Part of the problem is that the meanings of the words are often debatable. You might find a word used only once or twice. You might have some idea of the meaning, but not necessarily the exact context.
Even then, however, there are probably biases in the original text because the oldest fragments of text we have are probably more than 100 years older than the original texts. We don't know how often they were copied and how much they were changed.
Even if you had the papyrus or parchment that Paul himself (or a scribe) had written, there would still be debates on the meaning.
I went back and looked at the MS patent application and it claims to be a continuation of a series of patents applied for on July 10, 2001. The question remains on whether that application was still more than a year after.NET was in public use.
A google search shows that Microsoft announced that they would be releasing a release of C# around July 11, 2001.
Assuming they are allowed to extend the 1-year deadline by chaining to a previous application, I think they are still safe.
The way it looks to me, since the patent regulation says that the patent can't be granted for an invention that has been in use for more than a year,.NET itself invalidates the patent. It doesn't even matter if Mono implements everything in the patent.
I doubt that this qualifies as objective since it is my personal opinion, but I hope it isn't cliche-ridden.
There are several features of Java that I really miss when I have to code in C or C++:
Class.forName
To dynamically load a class, I just do Class.forName(classname). Combined with the Factory pattern, this makes it much easier to create pluggable implementations. You can still do that in C++, it's just harder.
exception.printStackTrace()
C++ has exceptions, but you can't get a stack trace on-the-fly from one. In a Java program, I can handle exceptions and log them to a database for later debugging. That makes it easier to find bugs. Also, Java lets you know when you have the potential for unhandled exceptions (some people hate that, too, but I like it).
Built-in thread awareness This one is probably closer to laziness, but I like being able to declare a method or block of code as synchronized, which is essentially the same as protecting it with a mutex. Using something like QMutex in C++ isn't really too much extra work.
Array bounds checking
This is another that C++ can do, but you have to do extra work for it. There are plenty of times when a Java program runs off the end of an array. Instead of giving me a core dump and killing the program (if I'm lucky), I get a nice little exception that I can handle. The same goes for referencing a null pointer (reference).
Garbage Collection
Okay, it's a blessing and a curse. On one hand, I don't have to worry about keeping track of references. On the other hand, you still get memory leaks, and your Java programs consume a lot more memory. Still, I really miss it when I start having to write destructors and copy constructors. In a large system, it is more difficult to keep track of who is supposed to free what memory. You end up using reference-counted pointers, which solve a lot of problems, but not all of them.
Reflection
I don't use reflection very often when writing business logic, but it comes in handy for writing frameworks. It is great to be able to dynamically access methods and fields at runtime (you locate the method/field by name, so it doesn't have to be known at compile time). Many of the networking and database frameworks use reflection to keep you from having to write tons of custom methods just to support the framework.
The libraries
Java has a great set of libraries that come with the standard JRE/JDK. While you can find the equivalent libraries for other languages, with Java you don't have to go searching as much. Plus, you know they're going to work when you move the application from platform to platform.
Java isn't perfect, the runtime is huge, the programs take a good bit of memory, swing still seems clunky to me, but when I have to do a large server application, I'd much rather be coding it in Java than C++.
Languages for the Java VM...
on
The Future of Java?
·
· Score: 5, Informative
Just had to add another Raddick review, for the video "Know Your Pug"
***** Tremendous February 24, 2002
An excellent guide which is helping me get to know my pug Grendel, which is not an easy job. My children have taken to attaching surprisingly realistic stick-on ears to his rump and he turned around and bit me recently when I tried to put a piece of cheese rind into what I thought was his mouth.
Blackcomb is a mountain range that passes through Whistler in British Columbia (at least, that's what I can make out from a quick Google search). I guess that's their way of saying that it is a successor to Whistler.
IANAL, but I don't think so. I believe that this provision allows them to still go through with Palladium, because it doesn't force them to document, disclose or license DRM code:
J. No provision of this Final Judgment shall: 1. Require Microsoft to document, disclose or license to third parties: (a) portions of APIs or Documentation or portions or layers of Communications Protocols the disclosure of which would compromise the security of a particular installation or group of installations of anti-piracy, anti-virus, software licensing, digital rights management, encryption or authentication systems, including without limitation, keys, authorization tokens or enforcement criteria; or (b) any API, interface or other information related to any Microsoft product if lawfully directed not to do so by a governmental agency of competent jurisdiction.
It had a touch-screen with a display that was probably about 18" high and 9" wide. There was a card reader to the right where you inserted your voting card. I'm not sure how the distribution of the cards will work. I don't know if they will issue every voter a card or if you get the card when you go to vote. It looked like it had a smart chip on it instead of a magstripe.
The user interface was pretty easy. It would present one or more categories and all the candidates for each category. You just touched the one you wanted. Once you selected a candidate, it greyed out the others. It took me a few seconds to figure out that if I changed my mind, I had to touch previous selection to undo it. There were "Next" and "Previous" buttons to navigate through the various pages.
At the end, it showed a summary of my votes so I could give a final yes/no to my choices. It printed out some kind of receipt, I think, but I didn't really look at it.
If I had to guess on the platform, I have to say that I did see an hourglass icon that looked just like the one in Windows. Maybe they're running WinCE or something. It looked a lot like one of those "pen computing" devices that never really went anywhere.
I would probably feel a little more secure about the system if it printed out a ballot that I then had to put in a ballot box, so it wouldn't be any worse than what we have now (from a fraud standpoint). It is certainly easier to use than the punch ballots we have now.
Didn't IBM fab their memory chips or something? I seem to remember some problem that Sun blamed on some chips fabbed by IBM.
I just looked it up, McNealy did the blaming:
Q: We reported last year about the problem with the external memory cache on UltraSPARC II chips that was causing a lot of Sun's Ultra Enterprise servers to crash. Is that something you're still grappling with, or is it history?
A: We're no longer buying IBM SRAM [static RAM]. They were the biggest source of the problem for us. They knew about it before, and they didn't tell us . . . But IBM sure made a big point of telling all of our customers about it a year and a half ago. But we don't have that issue anymore. We designed IBM out and put [error checking and correcting logic] across the entire cache architecture.
DOS 2.0 included Unixy features like file descriptors (instead of the old FCB file control blocks), directories, and devices as files (COM1:, LPT0:, etc) that weren't present in DOS 1.0.
Unfortunately, my memory fails as to whether this was still IBM PCDOS or MSDOS. I'm thinking by that time it was MSDOS.
Re:OK - now for 'Quake' written in bash
on
SedSokoban
·
· Score: 2
The Mono FAQ addresses this question and refers to an e-mail from Jim Miller of Microsoft. The e-mail says:
Beppe,
As one of the inventors on that patent as well as the person heading up
the standardization efforts for the CLI, I'd like to explain why I've
never felt the two are in conflict.
The ECMA process requires that all patents held by member companies that
are essential for implementing its standards are available under
"reasonable and non-discriminatory (RAND) terms" for the purpose of
implementing those Standards. This is the normal condition used in all
International Standards organizations, including both ECMA and ISO.
But Microsoft (and our co-sponsors, Intel and Hewlett-Packard) went
further and have agreed that our patents essential to implementing C#
and CLI will be available on a "royalty-free and otherwise RAND" basis
for this purpose.
Furthermore, our release of the Rotor source code base with a specific
license on its use gives wide use to our patents for a particular
(non-commercial) purpose, and as we explicitly state we are open to
additional licenses for other purposes.
--Jim
First, to be honest, I much prefer the King Isaac version.
"In the beginning, God created X, and X was without function. And God said, "Let there be f(X)!" and there was f(X). And God created Y to hold the f(X) and saw that it was good."
"And the serpent said unto Eve, 'has God told you that you may divide by any number in the garden?' And she replied unto him, 'By any number of the garden we may divide, but the by the zero in the center of the garden we must not divide, lest we die.' Then the serpent said unto her, 'You will not die. God knows that if you divide by the zero, you will become a Math professor and will become like God, or at least think you are.'
"And thus it is written that a Sine shall leave his mother, and a Cosine shall leave their home, and the two of them squared shall be as one."
"SCO sues Gartner Group"
My cat speaks Morris code...
Meeeeooooooww Meeeeooooooww....Meow....Meeeeooooooww Meeeeooooooww Meeeeooooooww....Meow Meeeeooooooww Meeeeooooooww........Meeeeooooooww Meeeeooooooww....Meow Meow....Meeeeooooooww Meow Meow Meeeeooooooww
walk on water...
Take your bloated code and use it as floats for your feet - you're walking on water
fly high into the sky
Stand on top of the heap and start your program - you'll be high in the air in no time.
pass through walls
Java uses pass-by-value, so you must convert yourself into something of value. I recommend having your face printed on currency and then slip yourself through a seam in the drywall. I don't recommend using dollars, however, since the $$$'s make it look like you're using Perl
understand any language without an interpreter
This comes up in every Java-related thread on here. Early Java was interpreted, but now we have Just-In-Time compilers, not to mention traditional compilers like gcj.
Even some of the modern translations, supposedly based on what we think are the most accurate and usually oldest sources, still reflect some cultural biases.
Part of the problem is that the meanings of the words are often debatable. You might find a word used only once or twice. You might have some idea of the meaning, but not necessarily the exact context.
Even then, however, there are probably biases in the original text because the oldest fragments of text we have are probably more than 100 years older than the original texts. We don't know how often they were copied and how much they were changed.
Even if you had the papyrus or parchment that Paul himself (or a scribe) had written, there would still be debates on the meaning.
I went back and looked at the MS patent application and it claims to be a continuation of a series of patents applied for on July 10, 2001. The question remains on whether that application was still more than a year after .NET was in public use.
A google search shows that Microsoft announced that they would be releasing a release of C# around July 11, 2001.
Assuming they are allowed to extend the 1-year deadline by chaining to a previous application, I think they are still safe.
The way it looks to me, since the patent regulation says that the patent can't be granted for an invention that has been in use for more than a year, .NET itself invalidates the patent. It doesn't even matter if Mono implements everything in the patent.
The picture at the bottom of the article has the following caption:
An Amish farmer takes a cell phone call as transgenic tobacco dries inside his 250-year-old barn in Holland, Pennsylvania.
Wonder what he uses for a ringer? Maybe a knock and a voice saying "Jedediah, thee has a call".
Come to think of it.. how does he recharge the thing?
I doubt that this qualifies as objective since it is my personal opinion, but I hope it isn't cliche-ridden.
There are several features of Java that I really miss when I have to code in C or C++:
Class.forName
To dynamically load a class, I just do Class.forName(classname). Combined with the Factory pattern, this makes it much easier to create pluggable implementations. You can still do that in C++, it's just harder.
exception.printStackTrace()
C++ has exceptions, but you can't get a stack trace on-the-fly from one. In a Java program, I can handle exceptions and log them to a database for later debugging. That makes it easier to find bugs.
Also, Java lets you know when you have the potential for unhandled exceptions (some people hate that, too, but I like it).
Built-in thread awareness
This one is probably closer to laziness, but I like being able to declare a method or block of code as synchronized, which is essentially the same as protecting it with a mutex. Using something like QMutex in C++ isn't really too much extra work.
Array bounds checking
This is another that C++ can do, but you have to do extra work for it. There are plenty of times when a Java program runs off the end of an array. Instead of giving me a core dump and killing the program (if I'm lucky), I get a nice little exception that I can handle. The same goes for referencing a null pointer (reference).
Garbage Collection
Okay, it's a blessing and a curse. On one hand, I don't have to worry about keeping track of references. On the other hand, you still get memory leaks, and your Java programs consume a lot more memory. Still, I really miss it when I start having to write destructors and copy constructors. In a large system, it is more difficult to keep track of who is supposed to free what memory. You end up using reference-counted pointers, which solve a lot of problems, but not all of them.
Reflection
I don't use reflection very often when writing business logic, but it comes in handy for writing frameworks. It is great to be able to dynamically access methods and fields at runtime (you locate the method/field by name, so it doesn't have to be known at compile time). Many of the networking and database frameworks use reflection to keep you from having to write tons of custom methods just to support the framework.
The libraries
Java has a great set of libraries that come with the standard JRE/JDK. While you can find the equivalent libraries for other languages, with Java you don't have to go searching as much. Plus, you know they're going to work when you move the application from platform to platform.
Java isn't perfect, the runtime is huge, the programs take a good bit of memory, swing still seems clunky to me, but when I have to do a large server application, I'd much rather be coding it in Java than C++.
can be found here.
It doesn't mention SmartEiffel, though, which does generate byte codes. There are probably many others as well.
Just had to add another Raddick review, for the video "Know Your Pug"
***** Tremendous February 24, 2002
An excellent guide which is helping me get to know my pug Grendel, which is not an easy job. My children have taken to attaching surprisingly realistic stick-on ears to his rump and he turned around and bit me recently when I tried to put a piece of cheese rind into what I thought was his mouth.
Blackcomb is a mountain range that passes through Whistler in British Columbia (at least, that's what I can make out from a quick Google search). I guess that's their way of saying that it is a successor to Whistler.
BMW: Microsoft Windows CE for Automotive
The question here is: What is Microsoft going to do when you try to sell your car?
IANAL, but I don't think so. I believe that this provision allows them to still go through with Palladium, because it doesn't force them to document, disclose or license DRM code:
J. No provision of this Final Judgment shall:
1. Require Microsoft to document, disclose or license to third parties: (a) portions of
APIs or Documentation or portions or layers of Communications Protocols the
disclosure of which would compromise the security of a particular installation or
group of installations of anti-piracy, anti-virus, software licensing, digital rights
management, encryption or authentication systems, including without limitation,
keys, authorization tokens or enforcement criteria; or (b) any API, interface or
other information related to any Microsoft product if lawfully directed not to do
so by a governmental agency of competent jurisdiction.
Talk about a sudden flash of enlightenment!
The existence of God is represented as the two-bit value 11. I *finally* understand what is meant by the holy trinity.
Thanks Larry!
It had a touch-screen with a display that was probably about 18" high and 9" wide. There was a card reader to the right where you inserted your voting card. I'm not sure how the distribution of the cards will work. I don't know if they will issue every voter a card or if you get the card when you go to vote. It looked like it had a smart chip on it instead of a magstripe.
The user interface was pretty easy. It would present one or more categories and all the candidates for each category. You just touched the one you wanted. Once you selected a candidate, it greyed out the others. It took me a few seconds to figure out that if I changed my mind, I had to touch previous selection to undo it. There were "Next" and "Previous" buttons to navigate through the various pages.
At the end, it showed a summary of my votes so I could give a final yes/no to my choices. It printed out some kind of receipt, I think, but I didn't really look at it.
If I had to guess on the platform, I have to say that I did see an hourglass icon that looked just like the one in Windows. Maybe they're running WinCE or something. It looked a lot like one of those "pen computing" devices that never really went anywhere.
I would probably feel a little more secure about the system if it printed out a ballot that I then had to put in a ballot box, so it wouldn't be any worse than what we have now (from a fraud standpoint). It is certainly easier to use than the punch ballots we have now.
Didn't IBM fab their memory chips or something? I seem to remember some problem that Sun blamed on some chips fabbed by IBM.
I just looked it up, McNealy did the blaming:
Q: We reported last year about the problem with the external memory cache on UltraSPARC II chips that was causing a lot of Sun's Ultra Enterprise servers to crash. Is that something you're still grappling with, or is it history?
A: We're no longer buying IBM SRAM [static RAM]. They were the biggest source of the problem for us. They knew about it before, and they didn't tell us . . . But IBM sure made a big point of telling all of our customers about it a year and a half ago. But we don't have that issue anymore. We designed IBM out and put [error checking and correcting logic] across the entire cache architecture.
This was in Computerworld last December.
Don't forget Gollum talking with a southern accent saying "My precious always said, life is like a box of chocolates."
After Helm's Deep & Isingard, the trees go on to attack a logging camp
I guess it's too late to put Leonardi DiCaprio and Kate Winslet on the prow of Boromir's boat.
DOS 2.0 included Unixy features like file descriptors (instead of the old FCB file control blocks), directories, and devices as files (COM1:, LPT0:, etc) that weren't present in DOS 1.0.
Unfortunately, my memory fails as to whether this was still IBM PCDOS or MSDOS. I'm thinking by that time it was MSDOS.
#!/bin/bash :-)
/usr/local/bin/quake
#
called Teach Yourself Teaching Yourself In 21 Days In 21 Days
I managed to get a transcript of the letter from Bohr to Heisenberg, here it is:
Dear Werner,
Ever since your last visit, I haven't seen my cat, Fluffy. You haven't seen her, have you?
Sincerely,
Neils