Will interest in C++ be revived after the Java fallout?

N

Nomen Nescio

http://blogs.computerworlduk.com/app-dev-and-programme-
management/2011/01/the-future-of-java/index.htm

I wonder if the enormous fallout between Oracle and the open-source
community over Java will lead to a renewed interest in C++. After all,
the fight between Oracle and the FOSS community is ultimately one of
ownership. Since there's no question about the ownership of C++ most
developers and companies may once again move back to C++, but this time
aided by open-source GUI frameworks such as wxWidgets. Also, we might
see a C++ FastCGI web-application framework similar to ASP.NET MVC pop-
up.
 
P

ptyxs

http://blogs.computerworlduk.com/app-dev-and-programme-
management/2011/01/the-future-of-java/index.htm

I wonder if the enormous fallout between Oracle and the open-source
community over Java will lead to a renewed interest in C++. After all,
the fight between Oracle and the FOSS community is ultimately one of
ownership. Since there's no question about the ownership of C++ most
developers and companies may once again move back to C++, but this time
aided by open-source GUI frameworks such as wxWidgets. Also, we might
see a C++ FastCGI web-application framework similar to ASP.NET MVC pop-
up.

Qt and QML are other open source C++ GUIs now offcially supported by
Intel, Nokia and also by the Linux project Meego.
 
Ö

Öö Tiib

http://blogs.computerworlduk.com/app-dev-and-programme-
management/2011/01/the-future-of-java/index.htm

I wonder if the enormous fallout between Oracle and the open-source
community over Java will lead to a renewed interest in C++. After all,
the fight between Oracle and the FOSS community is ultimately one of
ownership. Since there's no question about the ownership of C++ most
developers and companies may once again move back to C++, but this time
aided by open-source GUI frameworks such as wxWidgets. Also, we might
see a C++ FastCGI web-application framework similar to ASP.NET MVC pop-
up.

You speak like there there are only 2 languages to pick from and that
Java and C++ did compete over something.

Actually Java, C#, PHP, Javascript, C++, Python, Ruby, C and Objective
C are currently most popular languages and Java does compete in niche
of Python, Ruby, PHP and C#.
 
C

Carlo Milanesi

Nomen said:
I wonder if the enormous fallout between Oracle and the open-source
community over Java will lead to a renewed interest in C++.

I think Java and C++ belong to different camps, and therefore they are
not in competition. A relatively low level language like C++ has always
been and will keep to be a competitor of C language and of Fortran language.
I think that in the future C++ will be used less and less for GUI-based
or Web-based applications, and more and more for embedded software,
device drivers, numerical analysis libraries, and high-performance video
games engines.
 
J

James Kanze

I think Java and C++ belong to different camps, and therefore they are
not in competition. A relatively low level language like C++ has always
been and will keep to be a competitor of C language and of Fortran language.
I think that in the future C++ will be used less and less for GUI-based
or Web-based applications, and more and more for embedded software,
device drivers, numerical analysis libraries, and high-performance video
games engines.

Do people still write GUI applications? I thought that everyone
used html and a browser for user interaction. (And I'm being
faceous. I hope.)

One place C++ very definitely rules is large scale servers. The
HTML formatting may (and often is) deferred to Java, since
that's what the web server implementation supports, but the web
server implementation, and all of the programs that Java
interrogates to get the data, are written in C++. (The new
ones, anyway. There are still a lot floating around that were
written in C.)
 
A

Anonymous Remailer (austria)

You speak like there there are only 2 languages to pick from and that
Java and C++ did compete over something.

Actually Java, C#, PHP, Javascript, C++, Python, Ruby, C and Objective
C are currently most popular languages and Java does compete in niche
of Python, Ruby, PHP and C#.

C#, C/C++/ObjC and Java are the only 'general purpose' languages, both
suitable for web and client programs. Python is too slow and PHP is web-
only.

Both C# and Java have their problems, both suffer from slow-execution
speed, need for a runtime, slow startup times and decompiling
insecurity. In the case of C# it only runs on Windows (or at the least
is only supported by Microsoft on this platform). Java suffers from
complexity and Oracle's ownership which will mean that you'll pay
though your nose just to use it (they'll make sure you can only use it
if you buy their ridiculously expensive middleware and database).

C is error prone and archaic and not useful for anything more complex
than a demo program. Therefore C++ remains the only obvious choice. C++
has the added advantage of running fine on low-horsepower systems and
taking up minimal resouces (compared to C#, Java and especially
Python).\

Because of the insidious patent system in the U.S. it will be sheer
impossible to build a clean-room version of a Java or C#-like language.
Oracle (and Sun before it) probably patented every aspect of the syntax
and even though most of their patents could be invalidated in
subsequent trials this process could take decades and would run up huge
legal bills for anyone foolish enough to try this route.
 
I

Ian Collins

C#, C/C++/ObjC and Java are the only 'general purpose' languages, both
suitable for web and client programs. Python is too slow and PHP is web-
only.

No it isn't, PHP can be used as a general purpose scripting language.
C is error prone and archaic and not useful for anything more complex
than a demo program.

or you operating system kernel....
 
J

Jorgen Grahn

.
I wonder if the enormous fallout between Oracle and the open-source
community over Java will lead to a renewed interest in C++.

As far as I'm concerned, that fallout already happened between Sun and
us in the 1990s:

Sun's handling of the Java language has been both politically and
technically obtuse. Java's first GUI toolkit, AWT, was a mess that
had to be essentially replaced. Withdrawing the language from
ECMA/ISO standardization further nettled many developers already
upset by features of the Sun Community Source License (SCSL).
Restrictions in the SCSL continue to hamper open-source
implementations of Java 1.2 and their J2EE (Java 2 Enterprise
Edition) specification.

http://catb.org/~esr/writings/taoup/html/ch14s04.html#java

I personally rejected it early when I realized that unlike all other
languages I knew, it didn't come with any straight mappings to the
Unix APIs. No getopt-style command line parsing, and so on ...

/Jorgen
 
I

Ian Collins

Big lumps of C++ in Windows.

Our system has the back end stuff written in C++, and the pretty front
end in C#.

That's why I specifically said "kernel"!
 
P

Paul

Nomen Nescio said:
http://blogs.computerworlduk.com/app-dev-and-programme-
management/2011/01/the-future-of-java/index.htm

I wonder if the enormous fallout between Oracle and the open-source
community over Java will lead to a renewed interest in C++. After all,
the fight between Oracle and the FOSS community is ultimately one of
ownership. Since there's no question about the ownership of C++ most
developers and companies may once again move back to C++, but this time
aided by open-source GUI frameworks such as wxWidgets. Also, we might
see a C++ FastCGI web-application framework similar to ASP.NET MVC pop-
up.

Your original question seems to imply that C++ is currently less popular
than Java. I don't know if this is the case or not but Java seems to be the
language of choice for most application programming.
I doubt the Oracle argument will have much affect on the popularity of
either as it's probably no more than corporate bickering.

C++ is not a portable programming language and any, non trivial, program
will only work on the system is was designed to work on. Parts of code can
be modularised and considered protable but this doen't change the fact you
still need vastly different programs and different sets of debugging and
testing trials etc etc. Because of this think C++ will become more
specialised towards low-mid level OS routines and high performance graphics.
Front end applications will be left to other languages such as Java and
dotnet langs to name a few.
 
M

Michael Doubez

Do people still write GUI applications?  I thought that everyone
used html and a browser for user interaction.  (And I'm being
faceous.  I hope.)

With XUL/Gecko, application can be (and actually are) built using a
mix of HTML, Javascript and C++.

I have briefly dabbled with the tools and making C++ and Javascript
communicate is still painful/tedious. But the final result is quite
rewarding; thinking of all the people for which the main feature of
your program is that you can skin it at will :)
 
I

Ian Collins

With XUL/Gecko, application can be (and actually are) built using a
mix of HTML, Javascript and C++.

I have briefly dabbled with the tools and making C++ and Javascript
communicate is still painful/tedious. But the final result is quite
rewarding; thinking of all the people for which the main feature of
your program is that you can skin it at will :)

Actually it no more painful/tedious than making PHP and JavaScript
communicate. If anything it is slightly easier and definitely more
flexible. Most of the web application I write deal with some form of
system management and many of the APIs only have C bindings, so C++ is
the obvious choice for the implementation language. If the client wants
PHP then C++ is a good choice for a PHP extension!
 
J

James Kanze

Your original question seems to imply that C++ is currently less popular
than Java. I don't know if this is the case or not but Java seems to be the
language of choice for most application programming.

It depends on the domain. I've mostly worked on large scale
servers, and I've never seen Java there. Here (purely
application), we use Java, C# and C++, but its well over 90% C++
(mainly numerical number crunching). In the telephone systems
(network management) I've worked on, Java has been limited to
front ends, and in many cases, those have been replaced by
outputting HTML, and using Firefox as your front end.
I doubt the Oracle argument will have much affect on the popularity of
either as it's probably no more than corporate bickering.

I totally agree. Those who would have been turned off by one
company managing everything dropped Java a long time ago;
despite the claims, Sun was never very open with it.
C++ is not a portable programming language and any, non trivial, program
will only work on the system is was designed to work on.

That's not been my experience. I've moved several large (500
KLoc or more) applications from Windows or Solaris to Linux,
with no real problems. Given the way the language has evolved,
it's often been more work to move to a more recent version of
the compiler than to move from Windows to Unix.

Of course, there are parts that aren't standard, like the GUI.
My applications typically don't have a GUI, but I've heard of
people using Qt or WxWindows and porting without problems.
Parts of code can
be modularised and considered protable but this doen't change the fact you
still need vastly different programs and different sets of debugging and
testing trials etc etc.

You definitely need a distinct binary, and regardless of the
language, you definitely want to test on all of the platforms
your software will run on. (One could argue that this is a plus
for C++. The fact that your application can't run on a machine
you haven't built it for means that you can be sure of being
able to test it on all platforms it will run on. Java's binary
portability can cut both ways.
Because of this think C++ will become more
specialised towards low-mid level OS routines and high performance graphics.
Front end applications will be left to other languages such as Java and
dotnet langs to name a few.

Because of the lack of a standard library, C++ does have
a disadvantage when it comes to GUI's; I'd probably recommend
Java for a GUI front end, rather that C++, if for some reason
just outputting HTML to a browser wasn't sufficient. But the
GUI front end is just a very small part of most applications.
 
J

jacob navia

Le 25/01/11 21:30, Anonymous Remailer (austria) a écrit :
C is error prone and archaic and not useful for anything more complex
than a demo program.

The linux kernel is a demo program then. It demonstrates how blind are
the C++ zealots, that are unable to see beyond their nose (maybe because
their glasses are template smoked)
 
D

Daniel

One place C++ very definitely rules is large scale servers.  The
HTML formatting may (and often is) deferred to Java, since
that's what the web server implementation supports, but the web
server implementation, and all of the programs that Java
interrogates to get the data, are written in C++.  (The new
ones, anyway...)
Interesting. Do you believe that that's true of WebLogic, TIBCO
Enterprise Message Service, TIBCO BusinessWorks, IBM Process Server,
Sonic, Mule, ServiceMix, Tomcat, JBOSS? They sure come with a lot of
jar files!

Thanks,
Daniel
 
P

Paul

James Kanze said:
It depends on the domain. I've mostly worked on large scale
servers, and I've never seen Java there. Here (purely
application), we use Java, C# and C++, but its well over 90% C++
(mainly numerical number crunching). In the telephone systems
(network management) I've worked on, Java has been limited to
front ends, and in many cases, those have been replaced by
outputting HTML, and using Firefox as your front end.


I totally agree. Those who would have been turned off by one
company managing everything dropped Java a long time ago;
despite the claims, Sun was never very open with it.


That's not been my experience. I've moved several large (500
KLoc or more) applications from Windows or Solaris to Linux,
with no real problems. Given the way the language has evolved,
it's often been more work to move to a more recent version of
the compiler than to move from Windows to Unix.
Even a very basic windows winmain function and messsage loop cannot be
ported, your lucky if it runs on your version of windows nvm Linux.
As soon as you start adding code to make api calls you further add to
complexities.
I don't know about Solaris and linux but I know the whole structure of a
windows program is built arount the OS and I can't see how a C++ windows
program can be ported.
If you start getting into windows services and non GUI programs then its
going to be even more OS specific.

I don't see how porting a large windows program can be considered, over
rewriting a new program. I think you must have a had a very special one-off
case with your program with very little interaction with the OS.
Of course, there are parts that aren't standard, like the GUI.
My applications typically don't have a GUI, but I've heard of
people using Qt or WxWindows and porting without problems.


You definitely need a distinct binary, and regardless of the
language, you definitely want to test on all of the platforms
your software will run on. (One could argue that this is a plus
for C++. The fact that your application can't run on a machine
you haven't built it for means that you can be sure of being
able to test it on all platforms it will run on. Java's binary
portability can cut both ways.


Because of the lack of a standard library, C++ does have
a disadvantage when it comes to GUI's; I'd probably recommend
Java for a GUI front end, rather that C++, if for some reason
just outputting HTML to a browser wasn't sufficient. But the
GUI front end is just a very small part of most applications.

--

Java has many other libraries for telephony and networking and hardware
communication routines. It's not just GUI applicatons where Java has the
edge in portability.
It's possible to write a portable multi-socket server program in Java in one
afternoon.
I've never looked at the 3D drawing libraries in Java because my vector math
and calculus is not good enough to be a 3D programmer, but I'm sure it'd be
fun and probably a bit easier to use than directx.
 
D

Daniel

It depends on the domain.  I've mostly worked on large scale
servers, and I've never seen Java there.  

Contrary to James' claim, the growth of Java in the last decade has
largely been on the server domain, not the GUI domain. The biggest
growth in Java has been in messaging, middle ware and workflow tooling
used by large enterprises, as exemplified in products like TIBCO
Business Works, IBM Process Server, and Sonic ESB, all of which have
been developed largely in Java. The reasons for this are not
difficult to understand. Inter-operable middleware that supports
transactions requires standards. While C++ standardization was focused
on concepts, lambdas, and and a half dozen or so variants of smart
pointers, Java standardization was focused on Database (JDBC),
Messaging (JMS), Transaction Demarcation (JTA), Interface Lookup
(JNDI), Java Business Integration (JBI), etc. At the same time,
standard C++ offered abysmal support for XML processing, Unicode, and
dates, at a time when standardized business workflow scripting was
being specified in XML. And finally, support for reflection was found
to be very useful in middle ware tooling. I can't think of any modern
successful workflow product that was developed largely in C++ over the
last decade.

The OP's question is a good one, though.

-- Daniel
 
M

Michael Doubez

Contrary to James' claim, the growth of Java in the last decade has
largely been on the server domain, not the GUI domain.  The biggest
growth in Java has been in messaging, middle ware and workflow tooling
used by large enterprises, as exemplified in products like TIBCO
Business Works, IBM Process Server, and Sonic ESB, all of which have
been developed largely in Java.  The reasons for this are not
difficult to understand.  Inter-operable middleware that supports
transactions requires standards. While C++ standardization was focused
on concepts, lambdas, and and a half dozen or so variants of smart
pointers, Java standardization was focused on Database (JDBC),
Messaging (JMS), Transaction Demarcation (JTA), Interface Lookup
(JNDI), Java Business Integration (JBI), etc.

Which is not so much a stadard than a unique vision. As an example,
SQLITE is a second grade citizen in the Java landscape because this so-
called standardization didn't include it. In truth, it is not real a
standard language but a standard library. If such a library could
impose itself on the C++ market (something along the lines of Poco or
Boost by example), you would have the same result; as it is, there is
a fragmentation of the offer which is detrimental to the language
popularity.

Even Python/Ruby ... are popular because they propose an extensive
base library that allows abstracting from the underlying OS (up to a
point).

I don't criticized, IMHO the Java language was designed for limiting
the choices in design and in implementation (The philosophy being
reflected by recent Oracle line of conduct) with the underlying idea
that with the less freedom, the less mistakes.
 At the same time,
standard C++ offered abysmal support for XML processing, Unicode, and
dates, at a time when standardized business workflow scripting was
being specified in XML. And finally, support for reflection was found
to be very useful in middle ware tooling.

True but again not much work has been put into it since another
language filled the gap. And nowadays, more and more tools exist for
leveraging the gap; in particular code generation (such as Data
bindings from XML schema).
 I can't think of any modern
successful workflow product that was developed largely in C++ over the
last decade.

IMO better plugin support in C++ would be a plus in this regard.
Too bad the proposal didn't make it in c++0x.
 
T

tm

I don't know about Solaris and linux but I know the whole structure of a
windows program is built around the OS ...

I saw many Windows C++ projects like this.
Most programmers and managers don't consider portability.
Today libraries are much more important than the language.
A good standard library leads to portable programs.
Java programs are portable because of the Library.
In my own project I also try to provide a library that
covers many areas.


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
 

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,731
Messages
2,569,432
Members
44,832
Latest member
GlennSmall

Latest Threads

Top