<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="Content-Type">
  <title></title>
</head>
<body text="#000000" bgcolor="#ffffff">
On Monday 04 April 2011 01:19 AM, Bernd Petrovitsch wrote:
<blockquote cite="mid:1301860187.25574.8.camel@thorin" type="cite">
  <pre wrap="">Hi!

On Mon, 2011-04-04 at 00:47 +0530, mohit verma wrote: [....] 
  </pre>
  <blockquote type="cite">
    <pre wrap="">As far as i can decipher , we impose Object oriented paradigm in
kernel space using C  : like using gates to allow only one way entry
and binding functions to structures in a OOP fashion  and trying to
make them private to that structure only  , encapsulation of one
struct into another structure (and lots of features ) and itself  lots
of kernel subsystem supports like driver interface and blah blah
behaving like **objects** .......
    </pre>
  </blockquote>
  <pre wrap="">
OOP is a design issue independent of the used programming language. So
you actually *can* do OOP with C (or assembler or ....) and I have seen
C++ programs which do not employ the ideas behind OOP.

  </pre>
  <blockquote type="cite">
    <pre wrap="">why dont we use some fully OOPs supportive language like JAVA or
partial supportive language like  C++ to construct Linux Kernel????
    </pre>
  </blockquote>
  <pre wrap="">
What does it buy and what does it cost?

For - or more against - Java: You really do not want an OS to use an
interpreted "language". That kills performance. And the more interesting
challenge is to implement hardware IRQ handlers in Java.
  </pre>
</blockquote>
JVM has been optimised to such a level that it beats C++ in
performance. Only thing faster than that is C and assembly language. A
few chips process Java byte code at hardware level as well.&nbsp; <br>
Read this
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<a href="http://en.wikipedia.org/wiki/Jazelle">http://en.wikipedia.org/wiki/Jazelle</a>&nbsp;&nbsp;
... So this can't be a valid argument.<br>
<br>
The key thing over here is purpose. OOP based languages are essentially
meant to abstract the developers from the hassles of&nbsp; low level
operations (Assuming a programmer well versed with OOP) , so the focus
is on application development. Java plays an important role in
isolating low level hardware issues. That's why you have Java as a
proffered choice for mobile apps and not C. <br>
If you are developing kernel, you are programming bare metal. You have
to do low level operations like loading the program into the memory,
defining it's data segment, code segment, etc. Hence C is the obvious
choice since it's the closest to the hardware (meaning simple to deal
low level operations) and well structured than assembly language. <br>
<br>
<blockquote cite="mid:1301860187.25574.8.camel@thorin" type="cite">
  <pre wrap="">
C++ has lots of features which make it awkward to use. For starters,
think about the fact that Java does not have multiple inheritance.

  </pre>
  <blockquote type="cite">
    <pre wrap="">I don't  think that performance is the main reason behind all this .
Is it??
    </pre>
  </blockquote>
  <pre wrap="">
Did you google for it and read the links etc.?
You will find much more on this question.

Bernd
  </pre>
</blockquote>
<br>
<br>
<div class="moz-signature">-- <br>
Cheers !!!<br>
Chaitannya<br>
<br>
follow me on twitter <a h="ref=3D&quot;http://twitter.com/chaitannya&quot;">http://twitter.com/chaitannya</a>
<br>
<br>
I believe there's a hero in all of us <br>
who keeps us honest, gives us strength, makes us noble, and finally
allows us to die with pride,<br>
even though sometimes we have to be steady, and give up the thing we
want the most... even our dreams.<br>
- Spider Man 2<br>
</div>
</body>
</html>