What is exactly java ?
Java is a simple, object-oriented, network-savvy, interpreted, robust, secure, architecture-neutral, portable, high-performance, multithreaded, dynamic computer language.
Characterstics or
features of java
1. Java is a simple language. Java was initially modeled after C
and C++, minus some potentially confusing features. Pointers, multiple
implementation inheritance, and operator overloading are some C/C++ features
that are not part of Java. A feature not mandated in C/C++, but essential to
Java, is a garbage-collection facility that automatically reclaims objects and
arrays.
2. Java is an object-oriented language.
Java's object-oriented focus lets developers work on adapting Java to solve a
problem, rather than forcing us to manipulate the problem to meet language
constraints. This is different from a structured language like C. For example,
whereas Java lets you focus on savings account objects, C requires you to think
separately about savings account state (such a balance)
and behaviors (such as deposit and withdrawal).
3. Java is a network-savvy language.
Java's extensive network library makes it easy to cope with Transmission
Control Protocol/Internet Protocol (TCP/IP) network protocols like HTTP
(HyperText Transfer Protocol) and FTP (File Transfer Protocol), and simplifies
the task of making network connections. Furthermore, Java programs can access
objects across a TCP/IP network, via Uniform Resource Locators (URLs), with the
same ease as you would have accessing them from the local file system.
4. Java is an interpreted language.
At runtime, a Java program indirectly executes on the underlying platform (like
Windows or Linux) via a virtual machine (which is a software representation of
a hypothetical platform) and the associated execution environment. The virtual
machine translates the Java program's bytecodes (instructions and associated
data) to platform-specific instructions through interpretation. Interpretation is
the act of figuring out what a bytecode instruction means and then choosing
equivalent "canned" platform-specific instructions to execute. The
virtual machine then executes those platform-specific instructions.
Interpretation makes it easier to debug faulty Java programs because more
compile-time information is available at runtime. Interpretation also makes it
possible to delay the link step between the pieces of a Java program until
runtime, which speeds up development.
5. Java is a robust language. Java
programs must be reliable because they are used in both consumer and
mission-critical applications, ranging from Blu-ray players to
vehicle-navigation or air-control systems. Language features that help make
Java robust include declarations, duplicate type checking at compile time and
runtime (to prevent version mismatch problems), true arrays with automatic
bounds checking, and the omission of pointers. (We will discuss all of these
features in detail later in this series.)
Another aspect of Java's robustness is that loops must be controlled by Boolean
expressions instead of integer expressions where 0 is false and a nonzero value
is true. For example, Java doesn't allow a C-style loop such as while (x) x++; because the
loop might not end where expected. Instead, you must explicitly provide a
Boolean expression, such as while (x != 10) x++; (which means the loop will run until x equals 10).
6. Java is a secure language. Java
programs are used in networked/distributed environments. Because Java programs
can migrate to and execute on a network's various platforms, it's important to
safeguard these platforms from malicious code that might spread viruses, steal
credit card information, or perform other malicious acts. Java language
features that support robustness (like the omission of pointers) work with
security features such as the Java sandbox security model and public-key encryption.
Together these features prevent viruses and other dangerous code from wreaking
havoc on an unsuspecting platform.
In theory, Java is secure. In practice, various security
vulnerabilities have been detected and exploited. As a result, Sun
Microsystems then and Oracle now continue to release security
updates
7. Java is an architecture-neutral
language. Networks connect platforms with different architectures based on
various microprocessors and operating systems. You cannot expect Java to
generate platform-specific instructions and have these instructions
"understood" by all kinds of platforms that are part of a network.
Instead, Java generates platform-independent bytecode instructions that are
easy for each platform to interpret (via its implementation of the JVM).
8. Java is a portable language.
Architecture neutrality contributes to portability. However, there is more to
Java's portability than platform-independent bytecode instructions. Consider
that integer type sizes must not vary. For example, the 32-bit integer type
must always be signed and occupy 32 bits, regardless of where the 32-bit
integer is processed (e.g., a platform with 16-bit registers, a platform with
32-bit registers, or a platform with 64-bit registers). Java's libraries also
contribute to portability. Where necessary, they provide types that connect
Java code with platform-specific capabilities in the most portable manner
possible.
9. Java is a high-performance language.
Interpretation yields a level of performance that is usually more than
adequate. For very high-performance application scenarios Java uses
just-in-time compilation, which analyzes interpreted bytecode instruction
sequences and compiles frequently interpreted instruction sequences to
platform-specific instructions. Subsequent attempts to interpret these bytecode
instruction sequences result in the execution of equivalent platform-specific
instructions, resulting in a performance boost.
10. Java is a multithreaded language.
To improve the performance of programs that must accomplish several tasks at
once, Java supports the concept of threaded execution. For example,
a program that manages a Graphical User Interface (GUI) while waiting for input
from a network connection uses another thread to perform the wait instead of using
the default GUI thread for both tasks. This keeps the GUI responsive. Java's
synchronization primitives allow threads to safely communicate data between
themselves without corrupting the data.
11. Java is a dynamic language.
Because interconnections between program code and libraries happen dynamically
at runtime, it isn't necessary to explicitly link them. As a result, when a
program or one of its libraries evolves (for instance, for a bug fix or
performance improvement), a developer only needs to distribute the updated
program or library. Although dynamic behavior results in less code to
distribute when a version change occurs, this distribution policy can also lead
to version conflicts. For example, a developer removes a class type from a
library, or renames it. When a company distributes the updated library,
existing programs that depend on the class type will fail. To greatly reduce
this problem, Java supports an interface type, which is like a
contract between two parties.
Interpretation makes it easier to debug faulty Java programs because more compile-time information is available at runtime. Interpretation also makes it possible to delay the link step between the pieces of a Java program until runtime, which speeds up development.
Another aspect of Java's robustness is that loops must be controlled by Boolean expressions instead of integer expressions where 0 is false and a nonzero value is true. For example, Java doesn't allow a C-style loop such as while (x) x++; because the loop might not end where expected. Instead, you must explicitly provide a Boolean expression, such as while (x != 10) x++; (which means the loop will run until x equals 10).
In theory, Java is secure. In practice, various security vulnerabilities have been detected and exploited. As a result, Sun Microsystems then and Oracle now continue to release security updates
No comments:
Post a Comment