Posts Tagged ‘programming languages’
We see this “Is Java out of business?” question pop up year after year. They say that Java is the least feature-rich language of the popular languages on the JVM and the slowest to move on new features in the last decade. There are also people who believe that because so many new JVM languages are being invented is proof that the Java language is lacking and that Java is no longer meeting the needs of many developers. And yet, by all external markers, Java is alive, well, and growing.
Here are several proofs for it:
1. TIOBE ranked Java as its top language of 2015 currently shows it enjoying 5% growth in use since 2014, more than any other programming language.
2. RedMonk has recently published the latest edition of its bi-annual list of the top programming languages. Compiled with the help of data obtained from GitHub and StackOverflow, this list tells us about the usage and discussion of a language on the web. Just like the previous years Java is among the top of the programming languages.
3. Further, the PYPL Index, which ranks languages based on how often language tutorials are searched on Google, shows Java clearly out in front with 23.9% of the total search volume.
Since Java first appeared it has gained enormous popularity. Its rapid ascension and wide acceptance can be traced to its design and programming features, particularly in its promise that you can write a program once, and run it anywhere. Java was chosen as the programming language for network computers (NC) and has been perceived as a universal front end for the enterprise database. As stated in Java language white paper by Sun Microsystems: “Java is a simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, multithreaded, and dynamic.”
So here are the most common and significant advantages of Java that helped it to take its high position in a quite competitive environment of programming languages:
- Java is easy to learn.
Java was designed to be easy to use and is therefore easy to write, compile, debug, and learn than other programming languages.
- Java is platform-independent.
One of the most significant advantages of Java is its ability to move easily from one computer system to another. The ability to run the same program on many different systems is crucial to World Wide Web software, and Java succeeds at this by being platform-independent at both the source and binary levels.
- Java is secure.
Java considers security as part of its design. The Java language, compiler, interpreter, and runtime environment were each developed with security in mind.
- Java is robust.
Robust means reliability. Java puts a lot of emphasis on early checking for possible errors, as Java compilers are able to detect many problems that would first show up during execution time in other languages.
- Java is multithreaded.
Multithreaded is the capability for a program to perform several tasks simultaneously within a program. In Java, multithreaded programming has been smoothly integrated into it, while in other languages, operating system-specific procedures have to be called in order to enable multithreading.
Nonetheless things changed since the time when Java was created. In the recent years, many important languages have appeared and left an impact on the technology world. Due to their simplicity and user-friendliness, they have managed to surpass the more established languages. So we tried to make a list of reasons why Java is going to stay on the grind in the nearest future:
1. Java is time-proved.
You generally need a strong reason to switch from a language you’re currently using: it requires time to practice and learn new languages, and you have to be confident that the language you’re considering switching to will be supported in the long term. Nobody wants to build software in a language that will be obsolete in five years’ time.
2. JVM and the Java Ecosystem.
The Java Virtual Machine, or JVM. compiles programs into bytecode, which is then interpreted and run by the JVM. Because the JVM sits above your specific hardware and OS, it allows Java to be run on anything, a Windows machine, a Mac, or an obscure some flavor of Linux.
The big advantage granted by the JVM is in this increased compatibility and the stability it affords. Because your application runs in the VM instead of directly on your hardware, you can program said application once and trust that it is executable on every device with a Java VM implementation. This principle is the basis for Java’s core messaging: “Write once, run everywhere.” And it makes Java applications very resilient to underlying changes in the environment.
3. Java and the Internet of Things.
“I really think Java’s future is in IoT. I’d like to see Oracle and partners focused on a complete end-to-end storage solution for Java, from devices through gateways to enterprise back-ends. Building that story and making a success of it will help cement the next 20 years for Java. Not only is that a massive opportunity for the industry, but also one I think Java can do quite well,” said Mike Milinkovich, Executive Director of the Eclipse Foundation.
Oracle agrees. Per VP of Development Georges Saab, “Java is an excellent tech for IoT. Many of the challenges in IoT are many of the challenges of desktop and client Java helped address in the 1990s. You have many different hardware environments out there. You want to have your developers look at any part of the system, understand it and move on. Java is one of the few technologies out there that lets you do that.”
Thus, Java might have its detractors, and some of their arguments might even be reasonable. Nonetheless Java has evolved a lot since its inception, holds the lead in many areas of software development and has more prospects for the future. So, in our opinion, its survivability is not in doubt.
And what do you think? Is Java going to become one of the dead languages? Or it has all chances to survive? Feel free to share your thoughts in comments below!
Business Development Manager
Professional Software Development
However, in spite of the capacity and multifunctionality of popular languages, no one’s syntax is perfectly universal at the moment. Moreover, the programming is constantly developing. The spread of multi-core processors, cloud software, mobility, and distributed architectures have created new challenges for developers that require new approaches and new tools to solve them. Adding support for the latest features, paradigms, and patterns to already existing languages, especially the most popular may be quite complicated and sometimes the best solution is to start from the scratch.
Below a few programming languages are represented, each of them can seriously affect the current programming: solve a certain problem or eliminate disadvantages of the most popular languages nowadays.
This program language is quite similar to Java, but is not its clear version of course. Gavin King denies the fact that the developed language in Red Hat will be a “Java Killer”. King is well-known for the creation of ORM framework, Hibernate for Java. He likes Java, still considers that there is a lot of staff to be improved.
Among those things that are dissatisfied by King in Java are detailed syntax of the language, the lack of top features and higher-order functions, as well as the lack of support of meta-programming. He is particularly aggrieved with the shortage of declarative syntax for structured data defining, which, according to King’s words, “equates Java to XML». Ceylon aims to solve all these problems.
There is no any Ceylon virtual machines, Ceylon-compiler will produce java-bytecode that can run on JVM. But the language will be more than just compiler. Instead of XML it uses similar to JSON the declarative syntax for data tree structure has a static typing and modules system and supports a number of structures lack in Java – sequence, intersection and union. The strategic goal of this project is to create a new set of developer for Ceylon, which will replace Java, which, according to King, is “swollen”, clumsy and still not thoroughly modernized.
Also it’s said that Ceylon and Scala overap in many features, however there are lots of very curious points that distinguish it. Ceylon strengths against Scala are in: providing modularity, union/intersection types, abstraction over function, runtime metaprogramming.
Functional programming has been popular for a long time, but purely functional languages as Lisp and Haskell are often considered unsuitable for the software development, due to the fact that the codes of functional type are difficult to combine with the codes and libraries that are written in imperative languages (C ++, or Java).
F# language has been developed by Microsoft to unite the functionality and practicality. Since F # is the language of first-class on .Net CLR, it maintains the same libraries and functions like other CLR languages (such as C # or Visual Basic).
F# code is similar to OCaml code, but has its own interesting syntax. For instance, to facilitate the scientific calculations numeric data types in F # can be units of measure. Also F# has constructions to facilitate asynchronous input/output, CPU parallelization and output processes on the graphics processor.
The downside of F# is that it is not designed for a developer to dig into the details of how things are done like he would in an imperative programming language like C#. Despite the main downside, the upside is that F# can result in software that is more reliable, secure, and runs at a higher speed. It is more streamlined, and can allow an able practitioner to accomplish more things in a shorter amount of time.
In the past five years, F# has continued to gain its popularity, and Microsoft has detailed how the language has helped to solve complicated programming problems in industries as diverse as banking, insurance and energy.
Today the functional language comes with Visual Studio 2010, that is even better, but it’s not typical for the Microsoft corporation as the F # compiler and core library are available under the open Apache license. It’s free, and you can even use it on Mac, and Linux (using Mono runtime).
Interpreters, virtual machines, and control codes are very popular today. The Google team of engineers leading by Robert Griesemer Ken Thompson and Rob Pike have developed Go – programming language for general purpose, which is suitable for everything: starting from application development up to programming systems. In this sense it is more like C or C ++, than Java or C #. Still as the latest languages, Go includes such advanced features as memory cleaning from unnecessary data, reflection of current processes etc.
Also it’s important that the language was created for easy programming. Its basic syntax is similar to C, but Go deletes unnecessary repetition during optimization programs such as objects definition. The aim of Go team was to create the language which it would be convenient to write codes on, as well as on a dynamic scripting language, still which at the same time would had the power of compiled languages.
As it has begun to grow in prominence, the platform has matured and new features have been added. For example, the creators announced at the end of last year that it would be possible to develop Android apps using Go code only, which could attract further interest and open new possibilities – particularly as most Android software has been written in Java so far.
After five years of evolution, Google’s Go language — with version 1.5, which came out August 2015 – has gone from being a curiosity to a promising source for fast-moving new projects.
Opa is free of charge for using and currently is available for 64-bit Linux and Mac OS X platforms, others ports have been developed yet.
If you want to make a Java or .Net application, Fantom is at your disposal. In the beginning Fantom was created for a cross-platform mobility, so while using Fantom you can make a choice, and afterwards even switch the platforms. It provides a concise syntax along with elegant, cross portable libraries. Moreover the project Fantom consists not only of a compiler, which can run bytecode for JVM or .Net CLI but also it produces code from the API set, which separates API Java and .Net and form an additional level of mobility. It’s considered to be the one of Fan’s primary benefits, because it gives a chance to develop a suite of system APIs that are elegant and easy to use compared to the Java and .NET counter parts.
However, mobility is not the whole Fantom point. Being similar to C by its nature, it should also improve languages, which inspired developers to create it. It strives to take an intermediate position in the most controversial issues of syntax such as strict or dynamic typing, or while choosing between interfaces and classes. It has a light additional syntax for declaring data structures and object serialization. Besides it supports embedded functional programming and overlapping.
Like many of the niche languages, Fantom suffers from limited support via external tools. Its only IDE support, for example, is a single plug-in to the NetBeans product. This is likely to change as the community for Fantom grows and its unique design and cross-platform characteristics become more widely known.
Fantom is distributed for free under the Academic Free License 3.0 and is available for Windows and Unix-like platform (including Mac OS X).
Portable code is no longer off the wall. For instance, C has many available compilers for diverse architectures and CPU, and Java-bytecode will work wherever there is a JVM. However haXe is more than just portable, this is a multiplatform language, which can be used for different architecture as well as with various operating environments, ranging from embedded binary systems to interpreters and virtual machines.
In addition to the wireframe language there is a standard haXe library, which runs alike with every object, and there are specialized libraries to perform the peculiar functions of each platform. This includes data structures, maths and date, serialization, reflection, bytes, crypto, file system, database access, etc. The Haxe standard library also includes platform-specific API that gives you access to important parts of the platform capabilities, and can be easily extended.
Despite the fact that haXe is still under development, it’s already being used commercially by its creator, the game studio Motion Twin. Haxe is also used by thousands of developers worldwide to build games, apps, tools, and frameworks. Several high profile companies are using Haxe, such asNickelodeon, TiVo, Zynga and Prezi. It’s available for Linux, Mac OS and Windows under a combination of free licenses.
The majority of programming languages borrow functions and syntax from earlier languages. Zimbu took some pieces from almost all of them. Zimbu does not enforce one specific style of programming. You can do it the way that works best for the task at hand. The brainchild of Bram Moolenaar, creator of the Vim text editor, Zimbu is going to become a fast, precise, portable and easy to read language, which can be used to design anything from GUI-applications to OS kernels.
With its hybrid character, Zimbu syntax is unique and specific, but at the same time is rich with features. It uses expressions and operators, similar to those used in C, but with its own keywords, data types and block structures. It supports memory management, threads and conveyors. To be short Zimbu is procedural, like C: define procedures and data structures separately. Object Oriented, like Java: define classes that hold both procedures and data, support inheritance and other mechanisms to encourage code re-use. Functional: support function references, closures and callbacks.
The only problem is portability. Although Zimbu is a compiled language, its compiler produces ANSI C code, and binary files can be created only on platforms with integrated C-compiler.
Unfortunately, Zimbu project is still under development. The compiler and a few sample programs can be built by themselves, but not all valid Zimbu-code will compile and run properly. Not all declared functions are implemented; moreover even some implemented are ill-adapted. The language specification also might be changed over time: keywords, types and syntax will be added as the need arises. Hence, documentation is patchy. Still if you want to give it a try, pilot tools are already available under the Apache license.
Chapel, the first programming language by Cray, was created with provision for supercomputing and clustering.
Chapel is part of Cray Cascade Program, a large-scale HPC development, partially funded by the US Defense Advanced Research Project Agency (DARPA). Among the goals of this project are the segregation parallel algorithms from the hardware, the performance improvement on architectures and rising the parallel program’s portability. The creators typically characterize the Chapel language as having features related to the base language, task parallelism, data parallelism, and locality.
Chapel’s syntax consists of several languages’ syntaxes. In addition to the most frequently used (C, C++, Java), it borrows the concepts from such scientific programming languages as Fortan and Matlab. ZPL, High-Performance Fortan and previous Cray projects influenced Chapel’s functions of parallel-processing. Chapel is an imperative block-structured language, designed to be easy to learn for users of C, C++, Fortran, Java, Python, Matlab, and the like.
In contrast to many previous higher-level parallel languages, Chapel is designed around a multiresolution philosophy, permitting users to initially write very abstract code and then incrementally add more detail until they are as close to the machine as their needs require.
As it currently stands, Chapel is a useful prototype, yet one that requires additional work in order to be valuable to real users. At the moment it can be run on Cray supercomputers and various high-performance clusters, and it can be ported to most Unix systems (including MacOS X and Windows with Cygwin). The source code is available under a BSD-type free license.
Once the parallel processing has been a specialized niche of software development, but due to the spread of multi-core processors and distributed computing, parallelism has gained popularity. Unfortunately, today’s programming languages don’t keep up with this trend. That is why IBM Research creates X10 – the language, which is developed specially for parallel architectures and aimed at accumulating developer productivity “ten times”. It is a class-based, strongly-typed, garbage-collected, object-oriented language.
X10 parallelism is possible thanks to PGAS programming model (a model of the divided global address space). Code and data are divided into blocks and distributed across different “spaces”, thus facilitating the program scaling from a single-threaded prototype (a single space) to a multi-threaded, running on one or more multicore processor (few spaces) in high-performance cluster.
It is well designed to get rid of some complexity related to distributed-computing programming. X10 code most coincides with Java code. In fact, the x10 runtime is available either as built-in executable files or as class files for the JMV. X10 compiler can output C++ or Java source code. In future it is planned to develop a direct compatibility with Java. It also strives to eliminate possibility of errors by design, and through static checking.
Meanwhile the language is establishing, though it is already quite developed. Implementations of X10 are available for a wide variety of hardware and software platforms ranging from laptops, to commodity clusters, to supercomputers.The compiler and runtime environment are available on different platforms, including Linux, Mac OS X and Windows. Additional utilities include: the interactive development environment(IDE), based on Eclipse, and a debugger. They are both distributed under the Eclipse Public License.
Unfortunately it’s represented not all new languages, still as for me main ones…
If you have tried to work with any of them, you are welcome to share your experience in comments. Would be interesting to read about your practices.
Thanks for your attention 😉
The IT sector is flourishing. If you’ve used a computer for at least a couple of times in the last few years, you’ve probably noticed this. I’ve noticed it myself even more after a business trip to Stockholm where I was lucky to attend some conferences and learnt more about Swedish IT industry tendencies. These tendencies reflect our life in general. Life changes rapidly with new technologies bursting into it. And when it comes to programming languages, we get a chance to see very different trendy styles. Programming languages which were popular some years ago are not useful today. And no one can exactly predict which programming language will be popular in future. That’s why a programmer who wants to stay in developer fields has to adopt the right programming language from time to time.
As the Swedish software maker Erik Starck pointed out, “programming is about managing complexities”. And it’s really so. An understanding of at least one programming language makes an impressive addition to any CV nowadays.
It is also very difficult to get the exact number of users for any programming language. Many of us use multiple programming languages. The more experience you have, the more programming languages you use. The more programs you write or work with, the chances of using more languages rise. The larger the company, the more languages you’re likely to use.
There are a number of ways to measure the popularity of a programming language, for example, based on the number of: 1) new applications written in the language; 2) existing applications written in the language; 3) developers that use the language primarily; 4) developers that use the language ever; 5) web searches; 6) available jobs that require skills in the language; 7) developers’ favorites, etc.
My survey attempts to rank which programming languages are most popular in Sweden, each using a different measure. So, they are the following:
Python is an object-oriented programming language which allows developers to work quickly while integrating their systems more efficiently and effectively. Designed by Guido van Rossum in 1991, Python is one of the most easy to use programming languages.
Python is characterized by its use of indentation for readability, and its encouragement for elegant code by making developers do similar things in similar ways.
Top Employers: Amazon, Dell, Google, eBay, Instagram, Yahoo
Java is a class-based, object-oriented programming language founded by Sun Microsystems in 1995. Java is one of the most in-demand programming languages today for many reasons. First of all, it is a well-organized language with a strong library of reusable software components. Secondly, programs written in Java can run on many different computer architectures and operating systems because of the use of the JVM (Java virtual machine).
Top Employers: Amazon, Deloitte, Sun, eBay, Symantec Corporation, Cisco Systems, Samsung
C++ is a compiled, multi-paradigm language written as an update to C in 1979 by Bjarne Stroustrup.
Due to its high-level compatibility and object-orientation, C++ is used for developing a wide-range of applications and games which makes it a popular and sought after programming language by the employers.
Top Employers: Intel, the Math Works, Microsoft, Qualcomm, Amazon, Mozilla, Adobe, Volvo
Ruby is an open source, dynamic programming language designed by Yukihiro Matsumoto in 1995 with a key focus on productivity and simplicity .It is one of the most object-oriented languages in the world.
Ruby is a mix of elegant syntax which is easy to read and write and hence it has attracted many organizations and developers.
Top Employers: Spokes, VMware, Accenture, Cap Gemini, Siemens, BBC, NASA
Top Employers: Microsoft, Sales Force, IBM, Yahoo, Dell
C# is a compiled, object-oriented language developed by Microsoft.
It is highly used on Windows platform and labelled as the premium language for Microsoft .NET framework. C# is known for strong typing, procedural and functional programming discipline which is the reason it has acquired so much popularity.
Top Employers: Microsoft, HP, Digi-Key Corporation, Allscripts, Intel
Those are the top 6 programming languages which are in great demand among Swedish developers.
And one more thing: remember that opinions are like noses, everyone has one and they all smell 😉 If you disagree, please feel free to email me or write your own opinions in the comments.
Business Development Manager
Professional Software Development
The IT world is constantly forging ahead. There already exist several dozens of programming languages and software technologies. At the same time to choose the right thing for a specific project is not an easy thing to do.
Every technology has its own advantages and disadvantages. Hence, if you want to choose a certain implementation, which will be effective for both-development and its further support, you need to consider following issues: project scalability, its tasks and timeframes.
Large-scale projects (high load systems)
For big and high load systems (more than 3000 queries per sec, beginning from 10000 database tables) it is necessary to choose the technologies very comprehensively, as it will influence the general project productivity and security.
There are 4 suitable languages for the backend: Java, NodeJS, PHP and ASP. Though it’s better to use Java, as it allows achieving effective work speed, and gives the possibility to support hyperthreading and refacoring. Moreover, Java is one of the best fit from the point of view of development speed – there are plenty of handy frameworks.
It is better to remember, that NodeJS is a bit difficult to use when it comes to complicated calculations. Nevertheless, it helps to provide an easy project scalability and processing speed.
When it comes to high load systems, one should remember about extensibility, because it is one of the problem developers face to most often. Hence, it is necessary to think over the work layout with a database in details. For big projects it is better to put away relational databases, and turn attention to non-relational models, such as MongoDB и Redis. It is possible to use CouchDB as well.
It is relational bases that place a limit on the projects and do not give an opportunity to be extended easily. Non-relational models have a completely different structure: instead of SQL-queries API are used.
While working on middle-scale projects (1000-3000 queries per sec, 2000-10000 database tables), i.e. not too load, but not home pages either, it is possible to use Java and PHP. In this case NodeJS will not give such attractive results as in high load projects.
Databases can be both relational and non-relational. Everything depends on the further project development. If it is planned to grow rapidly, it is better to use non-relational models MongoDB or Redis. If a too big scalability is not required, Oracle will perfectly fit. The point is that in spite of being relational, Oracle is used in many projects that have a potential to scalability. At the same time there no extension problem emerge, even if several servers are used.
When the question is about small projects (less than 1000 queries per sec, 2000 databases), it is essential to put away all the complicated things, that present in high load systems. Consequently, PHP, Ruby on the Rails (this framework allows fast development), Erlang are best for development here. No doubt Java can fit as well, though it would be much faster and easier to use PHP or Ruby.
Anyway, apart from the project scalability it is essential to consider its potential. The reason is that the problems start after the project growth, when developers face to inability of an adequate project transfer to other servers and workload distribution. Besides, it is important to keep in mind the project tasks. It is highly possible to turn out, that what is popular today will not be effective for a specific project.
You know that my opinion is not the ultimate truth 🙂 I would be glad to read about your experience of using languages, databases while working on different projects!
Business Development Manager
Professional Software Development