|By Scott Quint||
|February 5, 2010 03:00 PM EST||
The question that is often posed in one rhetorical flourish or another is this: Which is better (faster, more efficient, blah blah blah...) Java or C++? The question that is really not being asked is: for what? Selecting a programming language is not like selecting a dinner suit; you are not going to be asking the question that frequently. In fact, this question is more like deciding on a business plan rather than simply selecting a tool from the tool box.
The reality is that the only people that would really ask this question are those that:
- Are just at the beginning of planning a software effort that will become the basis of a business or business group that has yet to be established.
- Have a full grasp of and can support apps made with either language
- Are writers of articles or blogs
- Have a burning desire to vindicate their own personal preference.
If you are a business and you have a software project that is just starting, there are a number of questions that will be asked before deciding on a programming language. In fact, I am about 110% certain that the question of which programming language to use almost never comes up. Why? Because business managers are going to use the language that their staff knows the best and that the company can best maintain. The only time it would even come into question is if there is some deep need that only a particular language can fulfill. For example: if you needed detailed interaction with the native operating system or hardware you would probably want to use C/C++. If, instead, you needed software that managed a lot of user interactive data with a short lifespan and the runtime environment was ambiguous, you may choose Java.
I can tell you from experience that software decisions become business culture in every business that is serious about the use of computers. If the business decided in the past that C/C++ was the way to go I can assure you that they will not ask that question again unless their current staff cannot produce a satisfactory product for the currently proposed project. It really doesn't matter if one is n milliseconds faster during this operation or that. What matters is using the staff on hand to produce, test and maintain the product.
In every comparison I've seen, the question comes down to performance. but we are at the point of comparing milliseconds and thus we are in realm of the silly comparisons for most applications. That level of performance really only matters when there are no other performance bottlenecks and where the difference would actually be perceptible (i.e., a 3d interactive adventure game or crunching huge amounts of scientific data). C/C++ was the first programming language I learned but I have been using Java since it became available. The performance comparisons started almost immediately...and it was ridiculous. Java was not originally meant to take over the computing world. It was meant to provide a more feature-rich internet experience. As a web tool, it was also intended to be easy. "Easy" means squishing all the hard stuff into automatic function or succinct APIs. Clearly, Java has come a long way since then and is used for much more. Its platform agnosticism has enabled rapid development of software for all kinds of hardware, leaving (most of) the low-level headaches for the JVM writers. What has actually happened is that Java was chosen for all kinds of good reasons regardless of performance (which was never comparable) and the JVM writers and hardware technology have made the performance discussion effectively irrelevant in most cases.
One part of the comparison debate that has always troubled me was that C/C++ and Java are not equal. C/C++ is a programming language with a rudimentary API (the C Runtime). The operating systems are not designed to accommodate the language and most of the feature-rich class libraries are third-party offerings. Java is more than just the language. It is the common platform (JVM) and it is the enormous class library that simplifies some rather complex low-level tasks, like socket management or stream IO.
The strength (and arguably a weakness) of C/C++ is that it is so fundamental that it is extremely versatile. C/C++ makes relatively few assumptions about how the software will be ultimately be constructed. Ultimately, C/C++ will be compiled to run as close to te machine as the machine allows. Java has many assumptions about the code construction. In fact, it mandates quite a bit. If you don't understand the Java way you are going to have a hard time. Therefore, Java has less flexibility overall. However, the Java way tends to be a good way and although certain architectural decisions are not negotiable, it usually provides a good way to get just about anything you need done and done in a pretty good way. Between that and the JVM specification, Java provides a consistent and clean way of writing software for multiple platforms and with a rotating pool of developers.
If it sounds like I am not making a clear comparison it is because I am not. I don't think that it is an apples-to-apples comparison. In my personal projects, I carefully consider which language I use, whether it will be C/C++, Java or even PHP for that matter. As with anything, I think about where I want to go and then determine how I want to get there. If you follow the C++ road to where it naturally takes you it is a different place than where Java naturally takes you. Sure they can overlap and sure you ride Java or C++ anywhere, but why? Well, in a business environment the whys are plentiful. As a technical lead or manager I am going to think more about getting it done for the least cost and with the fewest future maintenance problems. I am going to use my existing staff and make the most of their expertise. I am not going to create a new management division of development, design, test, build and support for a few milliseconds unless I absolutely have to. And really, unless I am in the business of writing wholly custom software for many different customers with completely different needs, I am most likely not going to be creating new software that departs all that radically from products I have already produced.
As fun as entertaining comparison discussions between C/C++ and Java are (obviously fun enough to inspire me to write this) they are really not practical except under the most unusual circumstances. That decision is made by the inventor of an idea that was probably already inspired during the use of one of the two in the first place. Businesses may consider the choice at the very beginning but as the business culture grows around its offerings the discussion becomes less and less relevant. You may choose the tools that best suit that initial design or outcome but after that, the tools tend to dictate where you go from there, whether it be who you hire or what new feature you add or even what markets you seek. However, as a musing of fancy for journal readers it is most valuable.
|kvorak 02/05/10 03:47:00 PM EST|
Finally... somebody agrees. The reason people can't answer this question objectively is because it's the WRONG QUESTION, lol. Well said.
Some people worry that OpenStack is more flash then substance; however, for many customers this could not be farther from the truth. No other technology equalizes the playing field between vendors while giving your internal teams better access than ever to infrastructure when they need it. In his session at 20th Cloud Expo, Chris Brown, a Solutions Marketing Manager at Nutanix, will talk through some real-world OpenStack deployments and look into the ways this can benefit customers of all sizes....
Feb. 26, 2017 12:00 AM EST Reads: 1,470
SYS-CON Events announced today that delaPlex will exhibit at SYS-CON's @CloudExpo, which will take place on June 6-8, 2017, at the Javits Center in New York City, NY. delaPlex pioneered Software Development as a Service (SDaaS), which provides scalable resources to build, test, and deploy software. It’s a fast and more reliable way to develop a new product or expand your in-house team.
Feb. 25, 2017 11:45 PM EST Reads: 1,974
Extreme Computing is the ability to leverage highly performant infrastructure and software to accelerate Big Data, machine learning, HPC, and Enterprise applications. High IOPS Storage, low-latency networks, in-memory databases, GPUs and other parallel accelerators are being used to achieve faster results and help businesses make better decisions. In his session at 18th Cloud Expo, Michael O'Neill, Strategic Business Development at NVIDIA, focused on some of the unique ways extreme computing is...
Feb. 25, 2017 10:45 PM EST Reads: 8,583
The explosion of new web/cloud/IoT-based applications and the data they generate are transforming our world right before our eyes. In this rush to adopt these new technologies, organizations are often ignoring fundamental questions concerning who owns the data and failing to ask for permission to conduct invasive surveillance of their customers. Organizations that are not transparent about how their systems gather data telemetry without offering shared data ownership risk product rejection, regu...
Feb. 25, 2017 10:30 PM EST Reads: 1,862
Due of the rise of Hadoop, many enterprises are now deploying their first small clusters of 10 to 20 servers. At this small scale, the complexity of operating the cluster looks and feels like general data center servers. It is not until the clusters scale, as they inevitably do, when the pain caused by the exponential complexity becomes apparent. We've seen this problem occur time and time again. In his session at Big Data Expo, Greg Bruno, Vice President of Engineering and co-founder of StackIQ...
Feb. 25, 2017 09:45 PM EST Reads: 9,319
The security needs of IoT environments require a strong, proven approach to maintain security, trust and privacy in their ecosystem. Assurance and protection of device identity, secure data encryption and authentication are the key security challenges organizations are trying to address when integrating IoT devices. This holds true for IoT applications in a wide range of industries, for example, healthcare, consumer devices, and manufacturing. In his session at @ThingsExpo, Lancen LaChance, vic...
Feb. 25, 2017 09:00 PM EST Reads: 9,121
"Plutora provides release and testing environment capabilities to the enterprise," explained Dalibor Siroky, Director and Co-founder of Plutora, in this SYS-CON.tv interview at @DevOpsSummit, held June 9-11, 2015, at the Javits Center in New York City.
Feb. 25, 2017 08:45 PM EST Reads: 4,724
FinTech is the sum of financial and technology, and it’s one of the fastest growing tech industries. Total global investments in FinTech almost reached $50 billion last year, but there is still a great deal of confusion over what it is and what it means – especially as it applies to retirement. Building financial startups is not simple, but with the right team, technology and an innovative approach it can be an extremely interesting domain to disrupt. FinTech heralds a financial revolution that...
Feb. 25, 2017 08:45 PM EST Reads: 1,943
SYS-CON Media announced today that @WebRTCSummit Blog, the largest WebRTC resource in the world, has been launched. @WebRTCSummit Blog offers top articles, news stories, and blog posts from the world's well-known experts and guarantees better exposure for its authors than any other publication. @WebRTCSummit Blog can be bookmarked ▸ Here @WebRTCSummit conference site can be bookmarked ▸ Here
Feb. 25, 2017 08:00 PM EST Reads: 13,562
In his session at DevOps Summit, Tapabrata Pal, Director of Enterprise Architecture at Capital One, will tell a story about how Capital One has embraced Agile and DevOps Security practices across the Enterprise – driven by Enterprise Architecture; bringing in Development, Operations and Information Security organizations together. Capital Ones DevOpsSec practice is based upon three "pillars" – Shift-Left, Automate Everything, Dashboard Everything. Within about three years, from 100% waterfall, C...
Feb. 25, 2017 08:00 PM EST Reads: 11,325
With major technology companies and startups seriously embracing IoT strategies, now is the perfect time to attend @ThingsExpo 2016 in New York. Learn what is going on, contribute to the discussions, and ensure that your enterprise is as "IoT-Ready" as it can be! Internet of @ThingsExpo, taking place June 6-8, 2017, at the Javits Center in New York City, New York, is co-located with 20th Cloud Expo and will feature technical sessions from a rock star conference faculty and the leading industry p...
Feb. 25, 2017 08:00 PM EST Reads: 1,915
SYS-CON Events announced today that Addteq will exhibit at SYS-CON's @DevOpsSummit at Cloud Expo New York, which will take place on June 6-8, 2017, at the Javits Center in New York City, NY. Addteq is one of the top 10 Platinum Atlassian Experts who specialize in DevOps, custom and continuous integration, automation, plugin development, and consulting for midsize and global firms. Addteq firmly believes that automation is essential for successful software releases. Addteq centers its products an...
Feb. 25, 2017 07:45 PM EST Reads: 554
In his keynote at @ThingsExpo, Chris Matthieu, Director of IoT Engineering at Citrix and co-founder and CTO of Octoblu, focused on building an IoT platform and company. He provided a behind-the-scenes look at Octoblu’s platform, business, and pivots along the way (including the Citrix acquisition of Octoblu).
Feb. 25, 2017 07:30 PM EST Reads: 1,819
SYS-CON Events announced today that IoT Now has been named “Media Sponsor” of SYS-CON's 20th International Cloud Expo, which will take place on June 6–8, 2017, at the Javits Center in New York City, NY. IoT Now explores the evolving opportunities and challenges facing CSPs, and it passes on some lessons learned from those who have taken the first steps in next-gen IoT services.
Feb. 25, 2017 07:00 PM EST Reads: 1,701
SYS-CON Events announced today that WineSOFT will exhibit at SYS-CON's 20th International Cloud Expo®, which will take place on June 6-8, 2017, at the Javits Center in New York City, NY. Based in Seoul and Irvine, WineSOFT is an innovative software house focusing on internet infrastructure solutions. The venture started as a bootstrap start-up in 2010 by focusing on making the internet faster and more powerful. WineSOFT’s knowledge is based on the expertise of TCP/IP, VPN, SSL, peer-to-peer, mob...
Feb. 25, 2017 06:45 PM EST Reads: 1,942
For organizations that have amassed large sums of software complexity, taking a microservices approach is the first step toward DevOps and continuous improvement / development. Integrating system-level analysis with microservices makes it easier to change and add functionality to applications at any time without the increase of risk. Before you start big transformation projects or a cloud migration, make sure these changes won’t take down your entire organization.
Feb. 25, 2017 06:30 PM EST Reads: 1,399
With billions of sensors deployed worldwide, the amount of machine-generated data will soon exceed what our networks can handle. But consumers and businesses will expect seamless experiences and real-time responsiveness. What does this mean for IoT devices and the infrastructure that supports them? More of the data will need to be handled at - or closer to - the devices themselves.
Feb. 25, 2017 05:45 PM EST Reads: 2,224
Updating DevOps to the latest production data slows down your development cycle. Probably it is due to slow, inefficient conventional storage and associated copy data management practices. In his session at @DevOpsSummit at 20th Cloud Expo, Dhiraj Sehgal, in Product and Solution at Tintri, will talk about DevOps and cloud-focused storage to update hundreds of child VMs (different flavors) with updates from a master VM in minutes, saving hours or even days in each development cycle. He will also...
Feb. 25, 2017 05:15 PM EST Reads: 2,688
SYS-CON Events announced today that Dataloop.IO, an innovator in cloud IT-monitoring whose products help organizations save time and money, has been named “Bronze Sponsor” of SYS-CON's 20th International Cloud Expo®, which will take place on June 6-8, 2017, at the Javits Center in New York City, NY. Dataloop.IO is an emerging software company on the cutting edge of major IT-infrastructure trends including cloud computing and microservices. The company, founded in the UK but now based in San Fran...
Feb. 25, 2017 05:00 PM EST Reads: 2,941
A strange thing is happening along the way to the Internet of Things, namely far too many devices to work with and manage. It has become clear that we'll need much higher efficiency user experiences that can allow us to more easily and scalably work with the thousands of devices that will soon be in each of our lives. Enter the conversational interface revolution, combining bots we can literally talk with, gesture to, and even direct with our thoughts, with embedded artificial intelligence, whic...
Feb. 25, 2017 04:45 PM EST Reads: 1,743