Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is Java 100% object oriented? [closed]

Tags:

java

oop

Java has primitive data types which doesn't derive from object like in Ruby. So can we consider Java as a 100% object oriented language? Another question: Why doesn't Java design primitive data types the object way?

like image 503
Silent Warrior Avatar asked Jun 10 '09 09:06

Silent Warrior


People also ask

Is Java 100% object oriented or not?

No! Java is not a "PURE" Object Oriented Language , because it uses primitive data types such as (int,float,char...etc). The developers of java could have made these primitive data types as objects(like String... etc), but the primitive data types such as int float... are more faster than objects!

What Java is not 100 percent OOP?

JAVA supports primitive data type as it, byte, long, etc so Java is not fully object-oriented. But on the other hand JAVA, we use data types like int, float, double, etc which are not object-oriented, and of course which is opposite of OOP. So, why JAVA is not 100% objected oriented.

Is 100% object oriented language?

based on object oriented concept. Java is not a pure object oriented language because it supports Primitive datatype such as int, byte, long? etc, to be used, which are not objects.

Why is Java not 100 Object Oriented in Quora?

Java is not fully object oriented because it supports primitive data type like int,byte,long etc.,which are not objects. Java is not said to be pure object-oriented because it supports primitive types such as int, byte, short, long etc.


2 Answers

When Java first appeared (versions 1.x) the JVM was really, really slow. Not implementing primitives as first-class objects was a compromise they had taken for speed purposes, although I think in the long run it was a really bad decision.

"Object oriented" also means lots of things for lots of people. You can have class-based OO (C++, Java, C#), or you can have prototype-based OO (Javascript, Lua).

100% object oriented doesn't mean much, really. Ruby also has problems that you'll encounter from time to time.

What bothers me about Java is that it doesn't provide the means to abstract ideas efficiently, to extend the language where it has problems. And whenever this issue was raised (see Guy Steele's "Growing a Language") the "oh noes, but what about Joe Sixpack?" argument is given. Even if you design a language that prevents shooting yourself in the foot, there's a difference between accidental complexity and real complexity (see No Silver Bullet) and mediocre developers will always find creative ways to shoot themselves.

For example Perl 5 is not object-oriented, but it is extensible enough that it allows Moose, an object system that allows very advanced techniques for dealing with the complexity of OO. And syntactic sugar is no problem.

like image 94
Alexandru Nedelcu Avatar answered Oct 20 '22 03:10

Alexandru Nedelcu


No, because it has data types that are not objects (such as int and byte). I believe Smalltalk is truly object-oriented but I have only a little experience with that language (about two months worth some five years ago).

I've also heard claims from the Ruby crowd but I have zero experience with that language.

This is, of course, using the definition of "truly OO" meaning it only has objects and no other types. Others may not agree with this definition.


It appears, after a little research into Python (I had no idea about the name/object distinction despite having coded in it for a year or so - more fool me, I guess), that it may indeed be truly OO.

The following code works fine:

#!/usr/bin/python
i = 7
print id(i)
print type(i)
print i.__str__()

outputting:

6701648
<type 'int'>
7

so even the base integers are objects here.

like image 32
paxdiablo Avatar answered Oct 20 '22 03:10

paxdiablo