C++ implementation of core Java API

  • Thread starter Generic Usenet Account
  • Start date
R

Roland Pibinger

Some years back I worked on a multi-threaded C++ app. I wrote C++ versions of
Java's Thread and Runnable classes for it, based on a freely-available
pthreads library.
It turned out that it was tricky to get the semantics to match, in part
because a C++ reference (type&) is not the same as a Java reference.

A Java reference is largely the same as a C/C++ pointer whereas C++
references are 'real' references.
There can be a distinct value to having Java-like libraries in C++.

I agree with that. There isn't much activity in this regard any more,
though (and in C++ in general), see e.g.
http://doc.trolltech.com/qq/qq12-qt4-iterators.html
 
L

Lew

Roland said:
A Java reference is largely the same as a C/C++ pointer whereas C++
references are 'real' references.

Nice pat description, but not accurate in detail. There are significant
differences in the semantics of Java references compared to C++ pointers or to
C++ references. That's the lesson I took away from implementing Java's Thread
and Runnable semantics in C++, and from other experience. In fact, thinking
of Java references as "the same", largely or otherwise, as either of the
others will lead to trouble in the code.
 
J

James Kanze

Some years back I worked on a multi-threaded C++ app. I wrote
C++ versions of Java's Thread and Runnable classes for it,
based on a freely-available pthreads library.
It turned out that it was tricky to get the semantics to
match, in part because a C++ reference (type&) is not the same
as a Java reference.

That's because Java's references are really what C++ calls
pointers. Most earlier C++ threading libraries had pretty much
the same interface as the Java one.
Also tricky was to get Thread to be startable on its own or
with a Runnable argument.

What was the problem? It always seems pretty trivial to me.

The big problem in C++ without garbage collection is managing
the lifetime of the thread object of a detached thread. Mainly
because the lifetime is largely irrelevant except for memory
management issues. But there are solutions which work there as
well, and for the most part, if you want to support clean
shutdown, you'll need to use them anyway.
 
J

James Kanze

Nice pat description, but not accurate in detail. There are
significant differences in the semantics of Java references
compared to C++ pointers or to C++ references.

Such as? C++ pointers do have additional features: they are
first class objects, for example and they support pointer
arithmetic. But since we're talking about emulating Java in
C++, and not the reverse, you can just ignore the added
features.
That's the lesson I took away from implementing Java's Thread
and Runnable semantics in C++, and from other experience. In
fact, thinking of Java references as "the same", largely or
otherwise, as either of the others will lead to trouble in the
code.

Trying to treat pointers as first class objects in Java will
lead to problems in Java, yes. If you're considering mapping in
the two directions, then you do have very distinctive concepts.
But if you're looking for the functionality of Java references
in C++, pointers have everything that is needed. (Of course,
you'll probably want to install garbage collection. But you'll
probably want to do that anyway.)
 
H

hawkingliu

That's what I am finding now!
Thank you very much, and I think it will be very useful.
 
R

Roedy Green

Definitely a good thing, since both projects look like abandon-ware, and
are very incomplete. Too bad, even a partial implementation could have
been useful.

The older you get the more wary you are of relying on any tool that
does not have multiple sources.
 
A

apm35

Sourceforge.net has a number of C++ implementations. Try the site's
"advanced search."

hth,
-Craig
<https://sourceforge.net/projects/stemkit/>
"A set of C++ libraries and build tools that provide core classes to
build a project upon. From exceptions and basic types (String, Integer,
Float, etc.) to collections and tracers. Where possible, Java API is
followed. Implementation is based on STL."

This one is pre-alpha. There is no web site and no released files. :-(

-Andrew Marlow
 
C

Craig

This one is pre-alpha. There is no web site and no released files. :-(

-Andrew Marlow

Yea;

Sorry Andrew. Looks like a wash. If you find anything let us know though.

thx,
-Craig
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,790
Messages
2,569,637
Members
45,348
Latest member
RoscoeNevi

Latest Threads

Top