I consider a language as OO if it supports A.P.I.E. (see below)
"I made a mental note of that, but I lost my mind." [ October 24, 2003: Message edited by: Howard Kushner ]
Howard Kushner<br />IBM Certified Enterprise Developer - WebSphere Studio Application Developer V5.0<br />IBM Certified Advanced System Administrator - WebSphere Application Server V5.0<br />IBM Certified Solution Developer - Web Services with WebSphere Studio V5.1<br /><a href="http://www.amazon.com/exec/obidos/tg/detail/-/1931182108/" target="_blank" rel="nofollow">Developing J2EE Applications with WebSphere Studio</a> my Certification Study Guide for IBM Test 287
the explanation for your first question according to me is : The JVM is what makes java look like platform independent , so the JVM is different for different platforms. Secondly something like Garbage collection is highly platform dependent. even on the same platform you are not able to predict the time at which garbage collector runs.
On my view there are two things that are not platform independent in Java 1)Thread Scheduling 2)Garbage Collections The Thread Scheduling is mapped to the native OS, and the other one alogorithm will be different in different platforms Regs Vivek Nidhi [ October 24, 2003: Message edited by: Vivek Nidhi ] [ October 24, 2003: Message edited by: Vivek Nidhi ]
Java has primitive values that are not objects; so one could argue that Java is not 100% object oriented. The Smalltalk programming language has no primitive values; so one could argue that it is 100% object oriented. I don't believe the above arguments are important.
Dan Chisholm<br />SCJP 1.4<br /> <br /><a href="http://www.danchisholm.net/" target="_blank" rel="nofollow">Try my mock exam.</a>
As Dan pointed out, Java is NOT fully object oriented. In order for Java to be 100% OO, primitives would also need to be objects, which they are not. Also, the Java programming language appears to be platform-independent, but that is only due to the underlying JVM. That layer effectively isolates any Java application from the underlying OS. When an API call must be made, the JVM handles it. As the JVM is directly interfacing with the underlying OS, the JVM must be tailored to the OS. Hence, we have various JVM's for various OS's. Depending upon whether or not you wish to include the JVM as "Java" or if you with "Java" to refer sepcifically to the programming language itself, you could argue that Java is or is not platform independent. For that question, it's pretty close to impossible to state that Java is or is not platform independent. However, this material is NOT covered on the exam and I am moving this thread to Java in General (Intermediate). If you'd like to continue this conversation, please do so in that forum.
You should also do a search at the saloon for these topics, as they are *very* frequently asked.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Isn't this debate kind of meaningless unless everyone can agree on EXACTLY what "platform independant language" and "object oriented" mean? Without defining the terms first, all else else is irrelavent. according to one of my books, one of the basic tenats is that to be a pure OO language, "everything must be an object". well, java clearly fails that with the primitive types. what does "platform independant" mean? usually, i've heard it defined as "write/compile once, run anywhere". Java (from a programmers perspective) does satisfy this. but somebody had to write all the JVMs, which clearly are NOT independant. I guess my main point is that you can't ask for concrete answers without giving concrete definitions of your terms...
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
Platform independent? I code and unittest on Windows 2000, then move to HP-UNIX for integration and acceptance testing, and then to Sun Solaris for production. I don't have to change a single line of code. That is platform independent in my book.