Live data from Hacker News

Oracle sues Google over use of Java in Android

marketwatch.com

331–340 of 345 posts

Re: Oracle sues Google over use of Java in Android

#331
post #7

The biggest issue I see with Oracle's lawsuit is not with Android itself, but the future of Java as an open platform. The claims are pretty serious, and Oracle is going straight for the jugular. It'll be interesting to see how it shakes out, but I've got to hope that Google will come out of this in good shape for the sake of Java. It's unfortunate that Oracle is interpreting Google's implementation of Dalvik and a Ja…

I shouldn't still be surprised by this shit, but the claims of patent 5,966,702 are basically "There was some data and we normalized it". Seriously. WTF?

Can we start putting questions like these on 1st year bachelors exams, so we can finally prove that someone "reasonably skilled in the arts" can figure it out?

Re: Oracle sues Google over use of Java in Android

#332

Earlier quoted context omitted.

For the particular cases I saw, runtime extensibility never mattered. (Do you have one where it does?) And extending a third party sum type is not very hard: data LibType = Zero | One Int | Two Int Int data MyType = ZeroOneTwo LibType | Three Int Int Int (It of course implies that you use MyType instead of LibType in your code.) Finally, if you really want to extend a sum type, no work around allowed, you might want…

The code using LibType is code you don't control; you can't change it to use MyType instead. Indeed, you don't even have the source code to it. That's also why the extensibility happens at runtime.

So What? Just do what you would have done in Java without inheritance: aggregate. For each function that matters, you can write a new one that handle the extra case:

   new_function ZeroOneTwo x = old_function x
   new_function Three a b c  = -- handling new case

Re: Oracle sues Google over use of Java in Android

#333

Earlier quoted context omitted.

The code using LibType is code you don't control; you can't change it to use MyType instead. Indeed, you don't even have the source code to it. That's also why the extensibility happens at runtime.

So What? Just do what you would have done in Java without inheritance: aggregate. For each function that matters, you can write a new one that handle the extra case: new_function ZeroOneTwo x = old_function x new_function Three a b c = -- handling new case

I'm not sure if you're being willfully obtuse or not. The functions that matter are functions you didn't write. You don't have the source code to them. You cannot rewrite them with an extra case because you can't rewrite all the calling sites, because those are baked into executable binaries.

The world of shrink-wrapped closed-source software may be a foreign world to many functional advocates, but it's the world I live in, and extensibility here is often done with polymorphism and inheritance. The code in the closed-source kernel (application, framework, whatever) interacts with values polymorphically, with modules and third parties relying on inheritance and overriding to work their behaviour into the system.

You want a market for components, where both buyers and sellers are protected; sellers do not necessarily want to reveal their source code, and buyers especially don't. Binary, executable code is the medium of interchange. In order to fit these things together you need protocols: sets of expected messages and documented responses. OO polymorphic interfaces, in other words. Inheritance at the interface level is necessary, and at the implementation level it decreases the burden somewhat - using aggregation instead can lead to problems of identity (the sub-parts of an aggregate each have a different one, since they are mutable).

Re: Oracle sues Google over use of Java in Android

#334

Earlier quoted context omitted.

Read. The. Claim. And no, the CLR is not totally different from the JVM.

You've not looked at them have you (the VMs)? The JVM is entirely a class-focused JVM. The CLR is a general purpose VM. I can access arbitrary memory in the CLR, but cannot on the JVM. I write as someone who has attempted to build a byte-code assembly file that would allow direct manipulation of binary arrays for the purpose of efficiently loading OpenGL vertex buffers that mix floats and ints. Cant be done in Java o…

> You've not looked at them have you (the VMs)?

I've looked at them, along with about half a dozen others.

> The JVM is entirely a class-focused JVM. The CLR is a general purpose VM. ... blah-blah-non-sequitur-blah ...

They are both VMs with similar overall strategies, similar technologies, and some distinct similarities. They're about as different as any two VMs are.

> Also, I admit I only read the first patent, but I believe it doesn't apply to Android simply because the Dalvik VM does not apply its security at the object level but the process level, thereby nuking the patent.

Unless they point out that the system handles processes as objects.

> As for mono, I doubt they would worry since they would simply point out that "class" and "object" have been used for determining security access since at least Windows NT. Or mono can simply turn off object level security and rely on the OS to do it. The whole list is replete with holes and workarounds.

You don't understand how patent trolling works, do you? The point is to make it so expensive and painful for the innovator to continue without giving the patent troll a big slice of the pie that the innovator capitulates and pays off the troll.

Re: Oracle sues Google over use of Java in Android

#335

Earlier quoted context omitted.

No I'm pretty sure they aren't. The CLR is totally different to the JVM.

And in evidence for the "Pretty Sure They Aren't" statement, here's Miguel de Icaza shitting his pants (not): http://tirania.org/blog/archive/2010/Aug-13.html

Miguel de Icaza, patent lawyer and prescient predictor. And also: unbiased.

Re: Oracle sues Google over use of Java in Android

#336
post #318

Earlier quoted context omitted.

I never bought into the whole "do no evil" bit, but I sure got sick of dealing with the army of people who did.

It's interesting to watch google... they are actually handling themselves /much better/ than I would expect them to... but I think there are solid business reasons for this. Google makes money because it uses data most of us consider private to serve up ads for us. If enough people stop trusting google, they will no longer be able to do this. Consumer trust is integral to their business. and there will always be tens…

Good points about Google.

Markets must be regulated. I know of no credible market theory that thinks there should be no regulation. As far as I can tell this is just a bizarre invention of American Libertarians.

Re: Oracle sues Google over use of Java in Android

#337

Earlier quoted context omitted.

If you drop the patent stuff and focus on fair pay I'm in.

Fair pay for developers? Quit your whining.

Do you know why sports stars make so much money? Because the owners make so much money and the sports stars had a union that was able to get more of that pie for them. Since, you know, without the players there would be no sport.

How much money is there in programming compared to sports?

Re: Oracle sues Google over use of Java in Android

#338

Earlier quoted context omitted.

So What? Just do what you would have done in Java without inheritance: aggregate. For each function that matters, you can write a new one that handle the extra case: new_function ZeroOneTwo x = old_function x new_function Three a b c = -- handling new case

I'm not sure if you're being willfully obtuse or not. The functions that matter are functions you didn't write. You don't have the source code to them. You cannot rewrite them with an extra case because you can't rewrite all the calling sites, because those are baked into executable binaries. The world of shrink-wrapped closed-source software may be a foreign world to many functional advocates, but it's the world I l…

First, I believe that the world of shrink-wrapped proprietary software should die.

Second, I fail to see how inheritance solves your problem: "The code using LibType is code you don't control; you can't change it to use MyType instead."

OK, let's try this with inheritance.

  class LibType                { Handles 3 cases       }
  class MyType extends LibType { Handles a fourth case }
Now tell me: how would you make the code of the library use an object of type `MyType` instead of `LibType`? If you don't control its code, I see only one way: somewhere, this library expects an object of type `LibType` as a parameter.

Interestingly, idiomatic functional programming do just that: passing functions as parameters. Or tuples of functions, in that case. You know that an object is just a tuple, right?. For instance:

  // Statically typed, Class based OO language
  class Foo {
    int   bar(int,);
    float baz(float, int);
    int x;
  }

  -- Haskell
  data Foo = Foo (Int -> Int)
                 (Float -> Int -> Int)
                 Int

  -- The same, with record syntax. (for easy access)
  data Foo = Foo { bar :: Int -> Int
                   baz :: Float -> Int -> Int
                   x   :: Int
                 }
Note that the functions in objects of type Foo aren't fixed. So I can override all I want. Class Polymorphism is cool, but I can do the same with mere parametric polymorphism if I really need to. Sure, the library must be designed for extensibility in the first place, but the same is true about OO libraries: inheriting from a class that isn't designed with inheritance in mind is dangerous.

Re: Oracle sues Google over use of Java in Android

#339

Earlier quoted context omitted.

I'm not sure if you're being willfully obtuse or not. The functions that matter are functions you didn't write. You don't have the source code to them. You cannot rewrite them with an extra case because you can't rewrite all the calling sites, because those are baked into executable binaries. The world of shrink-wrapped closed-source software may be a foreign world to many functional advocates, but it's the world I l…

First, I believe that the world of shrink-wrapped proprietary software should die. Second, I fail to see how inheritance solves your problem: " The code using LibType is code you don't control; you can't change it to use MyType instead. " OK, let's try this with inheritance. class LibType { Handles 3 cases } class MyType extends LibType { Handles a fourth case } Now tell me: how would you make the code of the library…

Dear down voter: would you care to explain which line I crossed please?

Re: Oracle sues Google over use of Java in Android

#340

Earlier quoted context omitted.

And in evidence for the "Pretty Sure They Aren't" statement, here's Miguel de Icaza shitting his pants (not): http://tirania.org/blog/archive/2010/Aug-13.html

Miguel de Icaza, patent lawyer and prescient predictor. And also: unbiased.

OP: "I'm pretty sure the Mono people are worried. "

You are saying that Miguel de Icaza is not one of these Mono people, nor is he representative of them.

Post reply on HN