Java reflection WTF



  •  Found some code today:

     if(object.getClass().getName().toString().indexOf("Double") >= 0) {

       double d= (double)object;

       //do some stuff with d

    }

     

    Count the WTFs, include if you wish TRWTF is Java.



  • Well, the good thing is that, other than being incredibly pointless, it can't really cause any harm.  It's not like you can somehow slip a DoubleBuffer in there.



  • @bstorer said:

    Well, the good thing is that, other than being incredibly pointless, it can't really cause any harm.  It's not like you can somehow slip a DoubleBuffer in there.
     

    Unless Java now has auto-unboxing, it won't compile as casting from reference types to basic types isn't possible. But if it does, it will throw ClassCastExceptions when it meets objects of class DoubleSidedFloppyDisk, so that's WTF #1. Further

    • indexOf(), because that invites abovementioned ClassCastExceptions, also equals("Double") would be faster, at least if object is not a Double
    • toString(), because getName() already returns a String
    • the whole thing instead of "if (object instanceof Double)"
    So, feeling very generous, I see three major WTFs without looking hard.


  •  Ok I see the above mentioned WTF's, but what does this has to do with reflection?



  • @Ilya Ehrenburg said:

    Unless Java now has auto-unboxing, it won't compile as casting from reference types to basic types isn't possible. But if it does, it will throw ClassCastExceptions when it meets objects of class DoubleSidedFloppyDisk, so that's WTF #1. Further...

     

     Java was given the gift of auto-boxing and auto-unboxing with Java 5.0 (or Java 1.5) or whatever the hell Sun is calling it these days.

    But otherwise good job finding the big three.  Another interesting WTF is that Double can appear anywhere in the string so a class of BigDouble would also evaluate to true.



  • @Ilya Ehrenburg said:

    Unless Java now has auto-unboxing,
    It does.

    @Ilya Ehrenburg said:

    it won't compile as casting from reference types to basic types isn't possible.
    Correct.  I assume if it's in a project, it does compile, which means that object is of a type which is a primative wrapper.

    @Ilya Ehrenburg said:

    But if it does, it will throw ClassCastExceptions when it meets objects of class DoubleSidedFloppyDisk, so that's WTF #1.
      Not quite.  Java wouldn't let it compile in the first place unless object were declared to be of type Boolean, Byte, Character, Short, Integer, Long, Float, or Double (did I cover all of them?).  If object is declared as, say, Object, it would never compile.  It doesn't matter what type is referenced by object, javac will catch it unless it's declared as an unboxable type.  Now it's possible that somewhere further up the line they are trying to cast something to one of the wrapper types, but that's not a problem with this particular section of code.@Ilya Ehrenburg said:
    Further

    • indexOf(), because that invites abovementioned ClassCastExceptions, also equals("Double") would be faster, at least if object is not a Double
    • toString(), because getName() already returns a String
    • the whole thing instead of "if (object instanceof Double)"
    All of which make it very pointless to do it the way it's been done, but they don't present any harm.

     @Ilya Ehrenburg said:

    So, feeling very generous, I see three major WTFs without looking hard.
    Oh, no doubt it's a WTF.

     

     



  • @AJAXdrivenBuzzwords said:

     

    But otherwise good job finding the big three.  Another interesting WTF is that Double can appear anywhere in the string so a class of BigDouble would also evaluate to true.

    And, again, the code would never compile in that case.  I suppose you could do magic with the class loader for Double and fuck it up, but that's not special to this code.


  • @bstorer said:

    Not quite.  Java wouldn't let it compile in the first place unless object were declared to be of type Boolean, Byte, Character, Short, Integer, Long, Float, or Double (did I cover all of them?).  If object is declared as, say, Object, it would never compile.  It doesn't matter what type is referenced by object, javac will catch it unless it's declared as an unboxable type.  Now it's possible that somewhere further up the line they are trying to cast something to one of the wrapper types, but that's not a problem with this particular section of code.

     

    I just answered my own post with yours: it WILL compile IFF they are using reflection to send an object to the method.  Say the method/class is in some JAR or compiled file somewhere and it takes an Object, the compiler will only check that you are sending an Object, since autoboxing will occur you will be sending an Object always, hence comiling.



  • @amischiefr said:

    @bstorer said:

    Not quite.  Java wouldn't let it compile in the first place unless object were declared to be of type Boolean, Byte, Character, Short, Integer, Long, Float, or Double (did I cover all of them?).  If object is declared as, say, Object, it would never compile.  It doesn't matter what type is referenced by object, javac will catch it unless it's declared as an unboxable type.  Now it's possible that somewhere further up the line they are trying to cast something to one of the wrapper types, but that's not a problem with this particular section of code.

     

    I just answered my own post with yours: it WILL compile IFF they are using reflection to send an object to the method.  Say the method/class is in some JAR or compiled file somewhere and it takes an Object, the compiler will only check that you are sending an Object, since autoboxing will occur you will be sending an Object always, hence comiling.

    But in that case the JAR or class shouldn't have compiled in the first place.  Javac doesn't care where you get object from, if it's not declared as a primitive wrapper, it's going to complain about inconvertable types.  You can't do (double)(some Object reference).  You have to do (double)(Double)(some Object reference), which isn't the case here.


  • @bstorer said:

     But in that case the JAR or class shouldn't have compiled in the first place.  Javac doesn't care where you get object from, if it's not declared as a primitive wrapper, it's going to complain about inconvertable types.  You can't do (double)(some Object reference).  You have to do (double)(Double)(some Object reference), which isn't the case here.

     

    If the class in question is a seperate class, and compiled seperately, from the one calling the method (through reflection) then it doesn't know whether or not the object was declared as a primitive wrapper or not.  Try it, it should compile expecting objects that are sent to the method to be coming as primitive wrappers.



  • @amischiefr said:

    If the class in question is a seperate class, and compiled seperately, from the one calling the method (through reflection) then it doesn't know whether or not the object was declared as a primitive wrapper or not.  Try it, it should compile expecting objects that are sent to the method to be coming as primitive wrappers.
     

    Maybe I'm not understanding you.  If you define some class Foo, which has a method bar, which looks like this:

    public void bar (Object object) {
        //blah, blah, blah
        if(object.getClass().getName().toString().indexOf("Double") >= 0) {
            double d= (double)object;
            //do some stuff with d
        }
    }

    It will not compile. Give it a shot.

    On the other hand, if you have a method like this:

    public void bar (Object object) {
        //blah, blah, blah
        if(object.getClass().getName().toString().indexOf("Double") >= 0) {
            double d= (double)object;
            //do some stuff with d
        }
    }

    And try to access it using Method.invoke, passing, for example, the String "banana" as the parameter, you'll get an IllegalArgumentException.  Either way, this isn't anything to do with the code from the OP.  If it compiles, then object is declared locally as a reference to a primitive wrapper, and is thus fine.  Casting problems elsewhere are a separate issue, and are a WTF with or without this code.



  •  For those unfamiliar with Java, this should probably be implemented as:

     if(object instanceof java.lang.Double) {

       double d= ((java.lang.Double)object).doubleValue(); //not necessary with auto-boxing in Java 1.5 or greater

       //do some stuff with d

    }

     



  • @bstorer said:

    On the other hand, if you have a method like this:

    public void bar (Object object) {
    //blah, blah, blah
    if(object.getClass().getName().toString().indexOf("Double") >= 0) {
    double d= (double)object;
    //do some stuff with d
    }
    }

    And try to access it using Method.invoke, passing, for example, the String "banana" as the parameter, you'll get an IllegalArgumentException.  Either way, this isn't anything to do with the code from the OP.  If it compiles, then object is declared locally as a reference to a primitive wrapper, and is thus fine.  Casting problems elsewhere are a separate issue, and are a WTF with or without this code.

    Shit.  That's what I get for copy-pasting.  It helps if I change the code, doesn't it?  Let's try this again:

    On the other hand, if you have a method like this:

    public void bar (Double object) {
    //blah, blah, blah
    if(object.getClass().getName().toString().indexOf("Double") >= 0) {
    double d= (double)object;
    //do some stuff with d
    }
    }

    And try to access it using Method.invoke, passing, for example, the String "banana" as the parameter, you'll get an IllegalArgumentException.  Either way, this isn't anything to do with the code from the OP.  If it compiles, then object is declared locally as a reference to a primitive wrapper, and is thus fine.  Casting problems elsewhere are a separate issue, and are a WTF with or without this code.



  • @APH said:

     For those unfamiliar with Java, this should probably be implemented as:

     if(object instanceof java.lang.Double) {

       double d= ((java.lang.Double)object).doubleValue(); //not necessary with auto-boxing in Java 1.5 or greater

       //do some stuff with d

    }

     

    Comes with free NullPointerException prevention!


  • @APH said:

     For those unfamiliar with Java, this should probably be implemented as:

     if(object instanceof java.lang.Double) {

       double d= ((java.lang.Double)object).doubleValue(); //not necessary with auto-boxing in Java 1.5 or greater

       //do some stuff with d

    }

     

    I'd use java.lang.Number instead of java.lang.Double.



  •  TRWTF is Java and its type system.

    Anyways, we desperately need someone to write Strings Considered Harmful.



  • Couldn't Sun have saved the world some agony by doing this:

    class String {

      String toString() {

         throw new Exception('You are an idiot.');

      }

    }



  • @SlyEcho said:

    @APH said:

     For those unfamiliar with Java, this should probably be implemented as:

     if(object instanceof java.lang.Double) {

       double d= ((java.lang.Double)object).doubleValue(); //not necessary with auto-boxing in Java 1.5 or greater

       //do some stuff with d

    }

     

    I'd use java.lang.Number instead of java.lang.Double.

     

    And that's why you'd be wrong. Maybe, just maybe, you'd want to treat Integers, Doubles, and BigDecimals differently? 



  • @savar said:

    Couldn't Sun have saved the world some agony by doing this:

    class String {

      String toString() {

         throw new Exception('You are an idiot.');

      }

    }

     

    Oh you're a clever little troll aren't you!  Yes because everybody who uses Java for anything is an idiot right?  One of the most used languages out there, if not the most widely used, is the worst out there for everything right?  Maybe you should just learn how to program and stop bitching about Java.  It works just fine for me.



  • @amischiefr said:

    One of the most used languages out there, if not the most widely used, is the worst out there for everything right?

    Interesting. I cannot remember the last time I used a native Java program or even had the JVM installed...

    @amischiefr said:

    It works just fine for me.

    Who are you trying to convince? Us or yourself?



  • @amischiefr said:

    Oh you're a clever little troll aren't you!  Yes because everybody who uses Java for anything is an idiot right?
    *sigh* Quit being righteously indignant. Getting upset over trolling just makes trolls happy. Besides, I don't think he was trolling.@savar said:
    Couldn't Sun have saved the world some agony by doing this:

    class String {

      String toString() {

         throw new Exception('You are an idiot.');

      }

    }

    Yes, TRWTF is that you can toString() a String, and that that makes no sense to do whatsoever. But you forget that firstly, String is a subclass of Object, and therefore has to implement toString(), even if it could only logically consist of the single line "return this;", and secondly, because of the way the class hierarchy works, it's possible to be handed an object that's a String without knowing in advance that it's a String, so being able to call toString() on it and still get sane results anyway is important. Programmers are stupid often, myself included, but there are legitimate use cases for a lot of this stuff.



  • @Farmer Brown said:

    Interesting. I cannot remember the last time I used a native Java program or even had the JVM installed...
     

    Wow, you really are an idiot.  Please do read up before you post complete ignorance alright?  Here is one place you can start: http://www.langpop.com/

    You must either be a highschool student or stupid.  Java is used widely by businesses for internal applications(J2SE), phones (J2ME), web services and web sites (J2EE, JSP, AJAX ect.), both for internal and external applications. Just because you're one of those retards out there that thinks Java either isn't real or isn't used doesn't make it so. 



  • @amischiefr said:

    You must either be a highschool student or stupid.

    Why do you assume those are mutually exclusive?  In the case of our new friend, I'm guessing it's an 11-year-old with nothing to do on Thanksgiving break who discovered the site through Digg, Reddit, Slashdot or one of the other Internet Malebolges.  He will probably wear himself out soon or get grounded from the computer or accidentally kill himself in some moronic way.



  • @amischiefr said:

    Wow, you really are an idiot.  Please do read up before you post complete ignorance alright?

    Are you really disputing what software I use on my machine on a regular basis? I do think I know better than you do whether I have a JVM installed on any of my machines. I can very openly and honestly say I do not.

    Your link does not refute that fact, so I am not sure what your point is.

    @amischiefr said:

    You must either be a highschool student or stupid.

    Why? Because I have not yet found a need for anything that uses the JVM? I don't follow you here.

    @amischiefr said:

    Just because you're one of those retards out there that thinks Java either isn't real or isn't used doesn't make it so.

    Maybe you responded to the wrong person. I said none of these things. I was just counter-relating your point to my experience. I don't use Java natively for anything on a daily basis. I don't even have a JVM installed. You arguing this makes me question your grasp of reality.



    Again, your defensiveness seems to be some sort of emotional response, and I am not quite sure I understand it. Are you this torn about your decision in life to concentrate on Java?



  • @morbiuswilters said:

    I'm guessing it's an 11-year-old

    I suppose that would still put me around twice the age most of us assume you are, so I am ok with that.



  • @Farmer Brown said:

    @morbiuswilters said:
    I'm guessing it's an 11-year-old
    I suppose that would still put me around twice the age most of us assume you are, so I am ok with that.
    If morb is five and a half, I'm actually quite impressed.  His vitriol is extremely advanced for a child of that age, even one from a broken home.



  • @bstorer said:

    If morb is five and a half, I'm actually quite impressed guilty of a felony.

    FTFY.

     

    @bstorer said:

    His vitriol is extremely advanced for a child of that age, even one from a broken home.

    I have seven daddies and they're all in the joint.



  • @bstorer said:

    His vitriol is extremely advanced for a child of that age

    I suppose we will have to agree to disagree on this point.



  • @amischiefr said:

    Oh you're a clever little troll aren't you!  Yes because everybody who uses Java for anything is an idiot right?  One of the most used languages out there, if not the most widely used, is the worst out there for everything right?  Maybe you should just learn how to program and stop bitching about Java.  It works just fine for me.

     

    Wow... what an overreaction. I was merely making a [lame] joke about how people abuse toString() in Java.

    I was not trying to defame Java in anyway. I recognize it's importance in enterprise computing and mobile device.

    There, now do you feel validated?



  • @savar said:

    Wow... what an overreaction. I was merely making a [lame] joke about how people abuse toString() in Java.

    I was not trying to defame Java in anyway. I recognize it's importance in enterprise computing and mobile device.

    There, now do you feel validated?

     

    Yes, thank you.



  • @amischiefr said:

    Yes, thank you.

    It is like the calm after you give a screaming baby his bottle...



  • OMG I didnt read java in so long that I was making a big stink-post about why this is not a wtf...

    if(object instanceof Double) { cast };

    I guess the developer was willing to figure out how to figure out the type of an object using the class, but never bothered reading about all the important operators of java.

     



  • @amischiefr said:

    @savar said:

    Wow... what an overreaction. I was merely making a [lame] joke about how people abuse toString() in Java.

    I was not trying to defame Java in anyway. I recognize it's importance in enterprise computing and mobile device.

    There, now do you feel validated?

     

    Yes, thank you.

     

    Just for you, amischiefr:

    Java is a stupid language. It has a disgustingly stupid type system, a half-assed approach to everything, and has insufficient tools for abstraction. It is a lame thing, and even though it tries to claim that it is a "new" language (when it came out), nothing is actually new, as everything Java provides has already been around in 1980. Java must die!!!!

     There, now do you feel validated?



  • @HypocriteWorld said:

    Java is a stupid language. It has a disgustingly stupid type system, a half-assed approach to everything, and has insufficient tools for abstraction. It is a lame thing, and even though it tries to claim that it is a "new" language (when it came out), nothing is actually new, as everything Java provides has already been around in 1980. Java must die!!!!

     There, now do you feel validated?

    Also, the implementation of generics is a joke.



  • @HypocriteWorld said:

    Java is a stupid language.
    More or less, yes.

    @HypocriteWorld said:

    It has a disgustingly stupid type system,
    Insofar as the primitives go, absolutely.  If you want to count some of the features of the object model's inheritance scheme as being part of the type system, then 100% yes.

     @HypocriteWorld said:

    a half-assed approach to everything
    Half-assed at best.

    @HypocriteWorld said:

    has insufficient tools for abstraction
    Couldn't agree more.

    @HypocriteWorld said:

    nothing is actually new, as everything Java provides has already been around in 1980
    If not earlier, and better.

    @HypocriteWorld said:

    Java must die!
    Hey, the JVM's not bad.

     



  • @bstorer said:

    Hey, the JVM's not bad.

    Probably not...

    I am just glad that nobody uses it so we really don't need to use it anyway.



  •  

    @bstorer said:

    If you want to count some of the features of the object model's inheritance scheme as being part of the type system, then 100% yes.

    Yes, I consider the class/inheritance/subtyping mechanism a part of the type system, since it is considered by the type checker.

     



  • @HypocriteWorld said:

    Java is a stupid language. It has a disgustingly stupid type system, a half-assed approach to everything, and has insufficient tools for abstraction. It is a lame thing, and even though it tries to claim that it is a "new" language (when it came out), nothing is actually new, as everything Java provides has already been around in 1980. Java must die!!!!

     

    Wow, sounds like somebody is a little bitter about Java.  Did Java rape your sister and kill your dog?  By the way you talk I would guess either this is the case or that perhaps you were held hostage by terrorists and forced to code in Java 24 hours a day for 7 years straight with nothing to eat but Hot Pockets and nothing to drink but Mountain Dew. The frustration you must have felt when java 1.5 came out and you had to learn how to use Generics!  Oh the horror!  They tortured you and tortured you, forcing you to refactor useless code so that all compiler errors went away.  And there was that one time that you tried to cover up a warning with the suppressed annotation and they chopped off your pinky toe!   The worst part though was Eclipse.  You begged and begged to use VI or hell, even PICO, but they insisted that you use Eclipse because of the cute intellisense.  Many were the days where you wished you could take 6 weeks to write a program in C++ that was now taking you 4 days with Java in Eclipse! 

     

    Then one day you escaped!! On your way out you noticed many hunched over spectacled gnomes huddled over their Mac laptops frantically typing away on /., and after inquiring you were informed that they were prisioners too!  The little gnomes also told you of many Windows-Hating-Linux users that were being forced to install Vista on new outgoing HP laptops!!!  OH THE HUMANITY!   Of course you felt compassion for these poor suffering people being as they were of like minds and released them from their bonds to flee captivity with you.  

    God bless you all...



  • @amischiefr said:

    Wow, sounds like somebody is a little bitter about Java.  Did Java rape your sister and kill your dog?  By the way you talk I would guess either this is the case or that perhaps you were held hostage by terrorists and forced to code in Java 24 hours a day for 7 years straight with nothing to eat but Hot Pockets and nothing to drink but Mountain Dew. The frustration you must have felt when java 1.5 came out and you had to learn how to use Generics!  Oh the horror!  They tortured you and tortured you, forcing you to refactor useless code so that all compiler errors went away.  And there was that one time that you tried to cover up a warning with the suppressed annotation and they chopped off your pinky toe!   The worst part though was Eclipse.  You begged and begged to use VI or hell, even PICO, but they insisted that you use Eclipse because of the cute intellisense.  Many were the days where you wished you could take 6 weeks to write a program in C++ that was now taking you 4 days with Java in Eclipse! 

     

    Then one day you escaped!! On your way out you noticed many hunched over spectacled gnomes huddled over their Mac laptops frantically typing away on /., and after inquiring you were informed that they were prisioners too!  The little gnomes also told you of many Windows-Hating-Linux users that were being forced to install Vista on new outgoing HP laptops!!!  OH THE HUMANITY!   Of course you felt compassion for these poor suffering people being as they were of like minds and released them from their bonds to flee captivity with you.  

    God bless you all...

     

    ROFL.

    Not sure if I should respond to this troll, but whatever -

    Apparently, Java is the best programming language that humans have ever invented. It's got all sorts of awesome stuff! We have data abstraction, dynamic dispatch, type system, interfaces, garbage collection, and even GENERICS!!! woohoo! Awesome! It doesn't matter that OOP existed in SIMULA-67 (1967), data abstraction existed in any language that has a module system, dynamic dispatch existed in Smalltalk (1970), GC existed in LISP (1958), and generics existed in ML (1977). But it doesn't matter, because I know Java is the best language, just because!

    Anyways, I don't have a sister and I don't have a dog, I know ML/Haskell-style parametric polymorphism which are 100x better than Java generics, and I guess I really wish to make a Java program in an entire day that takes 2 hours in Scheme or Haskell with less than half the length and 10x more readable. No, I'm not personally bitter with Java, no, it didn't hurt me (thankfully I didn't learn programming by starting with Java), but it did hurt the entire software community, not the least the fact that in 2008, we still haven't gone as far as John McCarthy did fifty years ago.

    amischiefr,  please open your eyes and look at the wonderful world of great programming languages outside Java.



  • @HypocriteWorld said:

    great programming languages outside Java
    DOES NOT COMPUTE.  STACK DUMP IMMINENT.  PREPARE FOR DUMP



  • @belgariontheking said:

    DOES NOT COMPUTE.  STACK DUMP IMMINENT.  PREPARE FOR DUMP

    Robot-noise-imitation is cool.


  • @HypocriteWorld said:

    I don't have a sister and I don't have a dog

    You'd have both, if not for Java!



  • @HypocriteWorld said:

    amischiefr,  please open your eyes and look at the wonderful world of great programming languages outside Java.

    you mean like Coldfusion



  • @Nelle said:

    you mean like Coldfusion
     

    ColdFusion? Pffft. VB6 is where it's at.



  • @PhillS said:

    @Nelle said:

    you mean like Coldfusion
     

    ColdFusion? Pffft. VB6 is where it's at.

     

    VB6 is the only language that I work in in which I don't save every 2 seconds.  That coupled with the fact that i edit while my program is running and I can't save while the program is running, and I'm using some third party libraries that if I don't set a registry key to debug mode it crashes the IDE.  Everytime it happens I just start praying that I have saved recently.  



  • @HypocriteWorld said:

    ROFL.

     

     Thank you, thank you I"ll be here all week.

    @HypocriteWorld said:

    Apparently, Java is the best programming language that humans have ever invented. It's got all sorts of awesome stuff! We have data abstraction, dynamic dispatch, type system, interfaces, garbage collection, and even GENERICS!!! woohoo! Awesome! It doesn't matter that OOP existed in SIMULA-67 (1967), data abstraction existed in any language that has a module system, dynamic dispatch existed in Smalltalk (1970), GC existed in LISP (1958), and generics existed in ML (1977). But it doesn't matter, because I know Java is the best language, just because.


    Okay, now WHERE in any of my posts did I say that Java is the best programming language?  All I have done is state that it is very prevalent, widely used and that it serves multiple purposes.  Depending on what you need to do, Java can be very efficient.  I would like to see you program a dynamic web page in ML in the time it takes me with Java, JSP and Struts :)  So please do read my posts before responding with such stupidity.

     @HypocriteWorld said:

    I know ML/Haskell-style parametric polymorphism which are 100x better than Java generics, and I guess I really wish to make a Java program in an entire day that takes 2 hours in Scheme or Haskell with less than half the length and 10x more readable. No, I'm not personally bitter with Java, no, it didn't hurt me (thankfully I didn't learn programming by starting with Java), but it did hurt the entire software community, not the least the fact that in 2008, we still haven't gone as far as John McCarthy did fifty years ago.


     So what you are saying is that we should do all of our programming (web interfaces, cell phone apps, web sites, backend applications) in functional languages like ML or LISP?  Are you fucking retarded?  Let me guess: you're a grad student :)  I saw many jackass grad students rant and rave about how cool Scheme and ML were.  They serve a function, but its not in enterprise solutions. Once again, I would love to see you code up an enterprise solution, something similar to eTrade, in ML in 1/10th of the time that it would take me in Java.  I would LOVE to see that :) 

     

    I have programmed in ML, Scheme, LISP and Prolog.  Fun little languages I agree.  I would hate to have to actually use them in the real world.  They are fantastic for research, but not very practical for what I do.

     

     



  • 1. Write me a major Java web app that works even when the user constantly uses Back, Refresh, and Open in New Window on the browser.

    2. In what way is the Java language more "practical" than Lisp and ML? Which feature of the Java language makes it so great for enterprise applications, other than massive amounts of boilerplate code that enterprises love to see? Well if you like writing boilerplate then I won't say anything more.

    3. Java Generics is still a WTF.



  • @HypocriteWorld said:

    Write me a major Java web app that works even when the user constantly uses Back, Refresh, and Open in New Window on the browser.
     

    You first: write me an online banking/trading application, something similar to eTrade, in ML :)  You can't and you know it.  So STFU and go protest something smelly hemp wearing grad student hippy.



  • @amischiefr said:

    @HypocriteWorld said:

    Write me a major Java web app that works even when the user constantly uses Back, Refresh, and Open in New Window on the browser.
     

    You first: write me an online banking/trading application, something similar to eTrade, in ML :)  You can't and you know it.  So STFU and go protest something smelly hemp wearing grad student hippy.

    So you're down to swearing and personal attacks now, because you fail at the argument?


  •  No, I'm just bashing you like you bashed Java, because its fun.  How exactly did I "fail" at the argument?  You cannot do in ML what I can do in Java, so how am I the one that fails?  If you made the argument that I should use PHP or .NET instead of Java you might actually have presented an intelligent argument, but instead you suggested that we all code in ML.  Therefore you sir fail.


Log in to reply