[Java](https://en.wikipedia.org/wiki/Java_(programming_language)) is a general-purpose computer programming language that is: 1. [Concurrent](https://en.wikipedia.org/wiki/Concurrent_computing) 2. [Class-Based](https://en.wikipedia.org/wiki/Class-based_programming) 3. [Object-Oriented](https://en.wikipedia.org/wiki/Object-oriented_programming) It has been specifically designed to have as few [implementation dependencies](http://www.java-tips.org/other-api-tips-100035/60-netbeans/1025-what-is-an-implementation-dependency-and-whathowwhen-should-i-use-one.html) as possible. Java applications are typically compiled to [bytecode](https://en.wikipedia.org/wiki/Bytecode) that can run on any [Java virtual machine](https://en.wikipedia.org/wiki/Java_virtual_machine) (JVM) regardless of computer architecture. The primary goals kept in mind during the making of the language were: - It must be simple, object-oriented, and familiar. - It must be robust and secure. - It must be architecture-neutral and portable. - It must execute with high performance. - It must be interpreted, threaded, and dynamic. The language derives much of its syntax from C and C++, but it has fewer low-level facilities than either of them. ## Why Learn JAVA? - JAVA IS EVERYWHERE. It is one of the most sought after programming languages. It is a standard for enterprise software, web-based content, games and mobile apps, as well as the [Android operating system](https://developer.android.com/index.html). - [Write once, run anywhere](https://en.wikipedia.org/wiki/Write_once,_run_anywhere) policy: Programs written in Java are compiled into machine-independent bytecodes, so it can run on any Java platform. Basically, Java is [Platform Independent](https://en.wikipedia.org/wiki/Cross-platform#Platform-independent_software) - Java has rich APIs: Java has built-in [application programming interfaces](https://en.wikipedia.org/wiki/Application_programming_interface) (APIs) for I/O, networking, data structures, concurrency, and many other functions. Standard libraries can be supplemented by open source libraries like Apache Commons, Google Guava, Netty and others. - Standardization: If you need to write a web/enterprise app, or you need data persistence or you need to do cryptography, no problem! Java is all you require. There are many standard tools/practices that extend the Java ecosystem, thanks to the [Java Community Process](https://www.jcp.org/en/introduction/overview) (JCP)!