Why Computer Programming?

Technological advancements take place around us everyday, from the evolution of bulky antenna phones into smart phones to the introduction of smart virtual assistants such as Apple’s Siri, Google Now and Windows’ Cortana. I am inspired by the fact that computer science has become a fundamental element in the development of a better, smarter future for our world and my goal is to be part of that development process.

My fascination with technology was sparked when, as a child I thought it would be a great idea to take apart my Playstation console. Aware of the danger, I was still eager to see how it all worked inside. I find it intriguing how fast society has been shaped and continues to be, by the influence of Computer Science. A few years ago if someone were to have claimed that cars would become autonomous, people would have doubted them. Now we are at a stage where nearly anything is possible and this is due to the relentless problem solving of computer scientists. The latest software update released by Tesla motors allows their cars to learn how to drive themselves, and is an example of artificial intelligence, a sector which I am most interested in. I want to study Computer Science because I want to gain the knowledge needed to be able to help find solutions to world problems, with the efficient use of computer technology. With the knowledge and skills, I will attain from this course, the creative ideas that I could bring into fruition would be endless. I hope to become one of the computer scientists who adapt technology to help the human race evolve. One possibility would be for artificially intelligent gadgets to recognise different people and adjust to their individual needs based on personal preferences. I have been teaching myself Objective-C syntax in my spare time and have completed online programming courses, which have allowed me to explore the endless possibilities that computer science can bring to the world.

I find the fields of Artificial Intelligence and Games Physics interesting and so I have decided to study a course to include these areas. I am currently studying an A level in Information Technology in which I have used Visual Basic in Microsoft Excel and Access. At home I have used the actionscript language in Macromedia Flash to build an interactive personal website.

I found this aspect of computing very interesting and so I will really enjoy programming in C++ and other programming languages. I am also studying an A level in Mathematics that I really enjoy. This would be useful for many parts of the course such as games physics.

When I’ve played computer games in the past I have always wanted to be able to create something similar. Consequently, the computer games programming course stood out as something that I really wanted to do. I have used some software programs such as Microsoft Visual Basic, Softimage|XSI ESP 3.0, Discreet 3DS MAX 5 (evaluation version) and Maya Personal Learning Edition. I would like to see people’s enjoyment when playing a game, knowing that I took part in producing it.

Java:

To conclude, Java is a boon for developers . It is the platform for building applications for multiple mobile devices, computers, laptops, navigation and other systems that we use in our day to day life. Just write once and run on multiple platforms where you can almost do each and everything in Java. Its flexibility, usage, availability, security, development, cost-effectiveness are the reasons for Why We Love Java (And You Should, Too!).

1.            Type safety: This is what I like to call a necessary evil, in Python or Ruby because of the lack of type safety it’s hard to know at any given point the type of a variable. This is a harder problem when you have more than 2 people working on the same code-base. This obviously doesn’t include issues from null pointer problems, but Scala mitigates that with it’s Option pattern. I believe in one of the google libraries a similar pattern is exposed. I think the verbosity of type safety is also reduced by scala’s type-inference.

2.            Concurrency: Java’s concurrency is significantly better than Ruby’s or Python because they have GILs which make multi-threaded concurrent operations less efficient than they should be.

3.            Garbage-collection: No need to manually manage memory like in C++ or run into memory leaks because of cyclic references. Java traverses the entire object graph to remove unreferenced memory. Obviously this is a double edged sword, since the cost of GC can slow down the program. But if this is a big deal, you can always allocate memory off the heap and manage it manually. I think with future garbage collector improvements such as G1 collector will improve this situation.

4.            Mature eco-system: Java has a ton of really well-written, well-tested libraries, a few of which include: Apache Commons – Apache Commons, Google Core Libraries for Java 1.6+ – Google Project Hosting and many other important frameworks written like Netty, Hadoop etc

5.            Performance: While Java doesn’t compare to code written in C++ (Comparison of Java and C++), it works pretty darn well. Netty is a stunning example of how performant well written java can be (checkout: Netty 4 at Twitter: Reduced GC Overhead | Twitter Blogs)

6.            Type Safety – Java is strongly typed. It forces you to precise. You have to define the type of the variables you are using – there is no magic involved. What at first seems hard for beginner, will make life much easier for you – there won’t be any hidden surprise. An apple is an apple and stays an apple. An apple will never be a pear.

7.            Object Orientation – Java is an object oriented language. This allows you to model, design your code in a way that closely relates to the real world. You can talk to your customer about your code “There is a Tree of apples and one apple is falling down” – and without any programming knowledge, the customer will understand what you are talking about.

8.            Performance – Java has an awesome performance, and with newer compilers and JVMs is getting better every year.

9.            Garbage Collection – Java was my first programming language, so to me it totally made sense that I just created objects and never had to care about memory allocation and de-allocation – It felt so intuitive, so normal, I didn’t realize how cool it was – until I started learning some C. You have to do it all on your own – get some free memory, use it, make sure you free it after you’re done, or you will soon run into problems – that is a big challenge on its own! Not much time for the actual problem you wanted to solve in the first place.

10.          Libraries – Java is massive. There is code for almost anything you could wish for, either natively in the JDK, or available as open source.

11.          Jobs – I never had to look hard for a job – for example after university, I got more offers than I was willing to take interviews. I took about 10, and then picked the best option out of the 10.

12.          Java is awesome!

13.          The syntax, you can find nothing in that unless it has a strong philosophy, no extra fancy things, you may write more but you never be confused.

14.          Full OOP (primitive types have wrappers that you can consider them as objects), It’s a nice feature, it makes you program in a very neat way, something you cannot find in C++, PHP, Scala, etc.

15.          Standard OOP, there is no crappy thing like friend functions in C++, no problematic multiple inheritance, no short-sighted extensions which you may find in other languages.

16.          Everything is where you believe it should be!

17.          Static types never let you loose any data or mess up your code with conditional statement for input parameters (which you have to walk with in dynamic type languages).

18.          It’s Reliable! If it works, I promise you it will work forever.

19.          Write once and run anywhere!

20.          The greatest reason, It makes you program in the standard way, encourage you to follow architectures and best practices.

To be fair, I really don’t believe Java is the best language.

However, Java and the Java EE platform have some features that always match for me, and really ends up being what I choose for my projects.

Some reasons:

•             Static typing. Partly a personal choice, but:

o             I do prefer checking things at compile time. Runtime is potentially production.

o             It brings powerful refactorings.

•             The language is more than correct:

o             C# has more features, but not really much that I’m missing. Not sure they are right, BTW.

o             There are cool (e.g. functional) languages which I think would be better or cooler, but they don’t have any fraction of the user base.

•             The whole platform is open source. From the virtual machine to the platform libraries to the application server (at least the ones I choose), you can just inspect all source and debug anything.

•             Cross-platform. Really. I do use Windows for development and Linux for productions. I’ve worked with developers on Windows, Mac and Linux, and we really don’t care. We’ll just use the same binaries.

•             Standard based. This is much more than a buzzword:

o             Java EE is an umbrella specification for a lot of specifications, like JAX-RS for REST web services, JAXB for XML (or even JSON) to/from Java object mapping, JPA for persistence, …

o             All specifications have been decided by multiple partners (JCP, leading to JSRs). There are some caveats, but it is an inclusive process. Oracle is really not the sole one to decide.

o             They are required to have a reference implementation and a test kit.

o             If you code for the standard vs its implementation, you can just switch implementation. And it works in practice, too 🙂 I do use multiple app servers and their standard implementations all the time, depending on the context (client, licenses etc.). And I’ve switched implementation libraries which are central to my applications, without having to change code.

•             Backwards compatibility: although I do tend to upgrade my code whenever possible, which lets me mostly have less custom code and use more standard stuff, it’s rather comforting to know that I just can upgrade my app server, jvm version etc.

•             Now, a lot of this only works if you code for standards. Putting implementation specific code will result in difficult upgrades, vendor lock-in (can’t switch libraries easily), etc. This requires some discipline, which I see as good. With time, this isn’t more difficult.

I don’t see many platforms matching those criteria. .NET comes near nowadays, but it isn’t as specified and much less free.

I a very good java developer. I have used the language for several years professionally. I am like the typical senior java developer having started from c, then to c++ and finally to java. I have always enjoyed the various core apis associated with java and also the manner in which java exposes OO style programming. I also commend java for the ease at which you can exploit multi-core systems via its concurrency api. Also, in keeping up with modern programming idioms, I commend java for adopting its new functional programming style via lambda expressions, streams et al. And also I appreciate the ever growing list of libraries written to extend the java language in many ways and directions.

Now .. with all that said I think that java is reaching certain limits in what it is capable of achieving without completely rewriting the language and turning it into a completely different language. And this leads me into saying something that I did not think I would ever say during my career as a java developer. I have only recently discovered a new JVM language that I feel is better than java. It is actually a superset of java. I am in the early days of learning this new language right now. That language is Scala. Currently it appears to be very difficult for me to grasp but what little I have managed to understand makes me feel very excited about the possibilities.

What sets Java apart from other programming languages?

Java is a high level, robust, secured and object-oriented programming language. There are many key differneces while comparing java with other languages. Code in C, C++ is first translated into specific type of native machine. The Java compiler instead turns code into something called Bytecode, which is then interpreted by software called the Java Runtime Environment (JRE) or JVM. With this we get the advantage of Write Once, Run Anywhere(WORA). Other features like Portability, Architectue-Neutral, Security, OOP’s, etc. Java is not just considerd but also used in developing many large distributed, enterprise applications. Java is, arguably, one of the most popular programming languages amongst developers and is used to create web applications, customized software and web portals, including eCommerce and m-Commerce solutions. A lot of technologies grouped in J2EE, that covers many the aspects of enterprise programming – servlets, jsp, ejb, jdbc to access the database, etc.

JAVA vs C

Java is Object-Oriented while C is procedural. C uses the top-down {sharp & smooth} approach while JAVA uses the bottom-up {on the rocks} approach. Java is strongly type-checked while C is not. JAVA supports Method Overloading while C does not support overloading at all. Unlike C, JAVA does not support Preprocessors, macro(upto certain level we can implement macros but those are not at all efficient and will be consider as bad practice), etc. Many new features, exception handling, automatic memory-management, native threads, etc.

JAVA vs C++

C++ is compatible with C source code, whereas, java provides the Java Native Interface and recently Java Native Access as a way to directly call C/C++ code. C++ is Write once, compile anywhere(WOCA), as Java is Write once, run anywhere/everywhere(WORA/WORE). C++ runs as native executable machine code for the target instruction set as java runs in a virtual machine. In terms of conversion, allows explicitly overriding types as well as some implicit narrowing conversions(for compatibility with C) but, java strongly follows rigid type safety except for widening conversions. C++ uses single and multiple inheritance of classes, including virtual inheritance and java uses single inheritance of classes. Supports multiple inheritance via the Interfaces construct, which is equivalent to a C++ class composed of abstract methods. In C++, const keyword for defining immutable variables and member functions that do not change the object. Being Const is propagated as a means to enforce, at compile-time, correctness of the code with respect to mutability of objects as in java, final provides a version of const, equivalent to type* const pointers for objects and const for primitive types. Immutability of object members achieved through read-only interfaces and object encapsulation.

JAVA vs .NET

Difference between .Net and Java is a purely Platform independent means the application that will work in any kind of Operating System. But, .Net is platform dependent software. .Net support to develop application in different languages and to develop application Rapidly. This feature is not exist in Java. Answer to why is Java more popular, long time ago, many people believed Java was slower than C because Java had to run through a virtual machine. Today however, Time and speed aren’t really affected by the programming language or the used technology as much as affected by memory cards capacity and processors speed (Clock rate). Hench programmers and developers started looking for the most powerful yet easy to ‘learn and work with’ programming language. And there came Java with the multi-platform support, Object oriented methodology and other great capabilities and features.

On the other hand, General Purpose applications are still developed using C++ because it doesn’t need any intermediate software to run and i think that java it’s been improved everyday by the newest releases of the implementation of the virtual machine.

JAVA vs PYTHON, RUBY, PHP

Python is a high-level language which fully supports object-oriented programming. It has rich built-in high-level data types and even supports dynamic typing; this makes it one of the preferred choices of newbie programmers as they have to write less code. But same is not the case with Java, as developers are required to define the type of each variable before using it. Python programs are generally expected to run slower than Java programs making Java a favorable choice for enterprise level application development. Moreover, Java has much better library support for some of the use cases than Python.

Ruby and Java have a lot in common, beginning with the fact that both are object-oriented languages and are strongly typed. The main difference between the two programming languages lies in the method of executing the code. Java code is first translated into virtual machine code which runs faster than Ruby’s interpreted code. Just like Python, the biggest reason developers prefer Ruby over Java is that a function that is implemented in Ruby will take fewer lines of code as compared to Java. This makes it easier for Ruby developers to manage the code. Generally, high traffic sites use Java rather than Ruby. A few years back, Twitter migrated to Java and Scala from Ruby.

Java and Ruby can be used together, and they complement each other. JRuby, basically written in Java is an implementation of the Ruby programming language a top on the Java Virtual Machine.

PHP is a server side scripting language whereas Java is a general purpose language. These two languages are structurally different and mutually inclusive. PHP is a weakly typed language whereas Java is a strongly typed language where a programmer is required to declare a data type for each variable and/or value. This may make PHP more attractive to programmers as it does not adhere to fixed standards like Java, but in turn it may complicate certain tasks. Apart from the structural difference, a major difference between the two is that in PHP, the JVM is restarted after every request; this can result in extra performance problems. A programmer should choose PHP if he/she doesn’t have a lot of time to complete a project, but should go for Java if the project lays emphasis on features like scalability, performance and security.

Finally, a really great reason to pick Java (as opposed to .NET or Objective-C) is the ultimate ecosystem and not just because of rich set of liberaries and amenable modules. The latest version brings so many new features that you can do everything. Java is really at the core of IT, not really benefiting directly from the vast cloud of languages which swarm around it, but certainly deriving value from all of the interoperability, present and future.

Java is among the most popular programming languages out there.

From laptops to data centers, gaming consoles to scientific supercomputers, cell phones to Internet, Java is everywhere! As a measure of popularity, Oracle quoted the statistics telling there are nine million Java developers in the world. This directly tells you the demand of Java and its evolution in software development in future.

Now let me answer your question, why programmers chose java or why do they like Java so much. So first let’s have a look at the data trends in the image given below which shows how Java has dominated this field from early 2000’s till the present 2017.

As you can see from the above statistics, Java is highly popular and widely used in the industry.

Apart from this, Java has been used in different domains. Some of them are listed below:

•             Banking: To deal with transaction management.

•             Retail: Billing applications that you see in a store/restaurant are completely written in Java.

•             Information Technology: Java is designed to solve implementation dependencies.

•             Android: Applications are either written in Java or uses Java API.

•             Financial services: It is used in server side applications.

•             Stock market: To write algorithms as to which company they should invest in.

•             Big Data: Hadoop MapReduce framework is written using Java.

•             Scientific and Research Community: To deal with huge amount of data.

Wait! Java can do more.

Let us see now what is Java?

Java is a programming language developed by James Gosling in 1995 for Sun Microsystems. It is an object-oriented language similar to C++, but with advanced and simplified features. Java is free to access and can run on all platforms.

Java is concurrent where you can execute many statements instead of sequentially executing it. Also, it is class-based and an object-oriented programming language. In addition to these features, Java is also an independent programming language that follows the logic of “Write once, Run anywhere”.

This means that the compiled code can run on all platforms which supports java.

In simple words, it is a computing platform where you can develop applications.

Some of the key features of Java that contributed to its popularity are:

Simple:

Java is designed to be easy to learn. If you are a fresher or a professional programmer, believe me it’s very simple to master Java. Java has made life easier by removing all the complexities such as pointers, operator overloading as you see in C++ or any other programming language.

Portable:

Java is platform independent which means that any application written on one platform can be easily ported to another platform. This is a key feature of java as it can run on all the operating systems without any dependencies.

Object oriented:

Java is an object oriented programming language. In java, everything is considered to be an “object” and all the operations are performed using these objects. These objects possess some state and behavior. Therefore, it is the most used language as it supports OOP’s concepts.

Security:

Java is a secured language because all the code is converted in byte code after compilation, which is not readable by human. Also, java does not use explicit pointer and run the programs inside the sandbox to prevent any activities from untrusted sources. It enables to develop virus-free, tamper-free systems/applications.

Dynamic:

Java is dynamic in nature as it has the ability to adapt to an evolving environment. Java programs carry a substantial amount of run-time information which is used to verify and resolve access to objects. It also supports dynamic memory allocation due to which memory wastage is reduced and performance of the application is increased.

Distributed:

Java provides a feature which helps to create distributed applications. Using Remote Method Invocation (RMI), a program can invoke a method of another program across a network and get the output. You can access files by calling the methods from any machine on the internet.

Robust:

Java has a strong memory management system. It helps in eliminating error as it checks the code during compile and run time. Java completely takes care of memory allocation and releasing, which makes the Java program more robust.

High Performance:

Java achieves high performance through the use of bytecode which can be easily translated into native machine code. With the use of JIT (Just-In-Time) compilers, Java enables high performance.

Java is most widely used programming language. It is present everywhere. It really doesn’t matter in which domain you work in, you will surely come across Java sooner or later!

Java is an all-around universal programming language. Due to its solidity and scalability, Java is found on mobiles, desktops and large-scale industry servers and applications.

Recently, Java has been gaining credibility in the area of Internet of Things (IoT) and cloud development.

Globally, there are around 10 million Java developers, and this community continues to grow on a daily basis. Similar to other open source technologies, Java encourages the values of giving back to the public.

Online forums, such as StackOverflow, consists of Java developer experts who are ready to help beginners.

Java is more commonly used in your daily life than you might think. It is used on popular websites you might often use such as Google, YouTube, LinkedIn, Amazon and eBay. Additionally, Java has a strong development roadmap with continuous progress in security and performance.

While Java does not suit all needs, it’s still a popular programming language which is widely used and benefits a lot of people and businesses.

Even after 22 years of existence, Java continues to evolve.

5 1 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

You May Like

0

0
Would love your thoughts, please comment.x
()
x