Mar 26, 2015 It can also be used for source code editing, search and replacing and file management. JEdit is written in Java, so it runs on Mac OS X, OS/2, Unix, VMS and Windows. It is released as free software with full source code, provided under the terms of the GPL 2.0. Sep 28, 2018 Definition: “Java is a programming language that produces software for multiple platforms. When a programmer writes a Java application, the compiled code (known as bytecode) runs on most operating systems (OS), including Windows, Linux, and Mac OS. Java derives much of its syntax from the C and C programming languages.”. Apr 14, 2020 Java allows you to play online games, chat with people around the world, calculate your mortgage interest, and view images in 3D, just to name a few. Java software for your computer, or the Java Runtime Environment, is also referred to as the Java Runtime, Runtime Environment, Runtime, JRE, Java Virtual Machine, Virtual Machine, Java VM, JVM.
What is Java programming?
Java programming is a general purpose object-oriented programming language, which broke the records of popularity in past few years. Yes, this language had the highest job opportunities and still growing.
It is also widely used over 3 billion devices in the world. Yes, this is huge.
What makes it so much popular? Well, there are numerous reason behind it and we will be discussing each of them here. But first, let’s look at what definition has to offer.
Definition: “Java is a programming language that produces software for multiple platforms. When a programmer writes a Java application, the compiled code (known as bytecode) runs on most operating systems (OS), including Windows, Linux, and Mac OS. Java derives much of its syntax from the C and C++ programming languages.”
Also Read –What is Programming? Introduction How to begin?
Why Java Programming Was Created?
Java was created to develop virus-free software for consumer electronic devices such as tv’s, washing machines, smart watches and much more. It was first introduced by James Gosling from Sun Microsystems California, United States.
It was originally called as oak. Now, why oak? because there was an oak tree outside Gosling’s office. Later “Green Team” which was lead by Gasling demonstrated it with television but then they realized that this language is too advanced for digital cable television at that time so the name was changed to java which means a cup of coffee. This is also the reason behind the logo of the this language as well.
Also Read –10 interesting facts about Java
Features of Java Programming
- Platform Independent: The vision behind the creation of java is (WORA). WORA stands for “write once, run anywhere”. This implies that the code written in this language can be run on any platform or operating system without any technical hindrance. In simple words code written in windows, can be run on Linux, UNIX, and even Mac OS as well.
- Object-oriented language: As we all know that different programming languages follow different approaches. But object-oriented is the most famous one. It is followed by c++ as well. This approach lets you divide big complex problems into small chunks. It is done by creating objects, which results in code reusability and easy maintenance of code.
- Fast: If we look at the past versions then this language was criticized for being too slow. But, the time has changed now. The new JVMs are much faster. Here JVM stands for java virtual machine, which enables the computer to run Java programmes as well as programmes written in other languages.
- More Secure. Security is the main concern in this language. As the platforms used to build Java-based applications provide an extra layer of security, makes it more reliable. it also has automatic memory management which saves us from memory leaks and memory corruption.
- Large Standard library: One of the reasons why this language is widely used is because of the availability of its huge standard library. Similar to other code standard libraries, they provide a great set of functionalities to the programmer.
Applications of Java Programming
Java applications are widely used over the planet. The chances of having an interaction with them in some way or the other are very high. As we mentioned earlier 3 billion java powered devices are being used every day. To this contrast here are some applications of java.
- Android Apps- it is mainly used to make android apps. These apps were made with the help of Java SDK (Software Development Kit).
- Web Apps- it is also known for the development of some very renowned web apps such as Google, Facebook, and linkedin.com etc. Though these websites are not entirely written with java some other languages are also used.
- Big Data Processing- This is also known by the term Data Science. So, yes you can use the popular framework Hadoop to process big data, which is purely written in this language. In order to know more about data science.
- Embedded Devices- Java embedded technologies provide a platform to billions of devices such as tv’s, washing machines and much more. On the other hand languages like c and c++ is still a popular choice for embedded devices.
- Trading System- There are numerous trading apps on play store. This clearly shows that this language is also used to make low latency based trading apps where time matters the most.
- Game Development– Yes java also plays a very important role in game development. In fact, one of the most popular android games like TempleRun, Minecraft and Asphalt 4 were built using this language.
Also Read –5 Best Programming languages for Data Science
Various Resources to learn Java programming
Well, there are tons of resources out there. You can join coaching classes in your city or if you feel lazy to do that then there are some good online sources as well.
Here we are listing some of the most popular resources on the internet which are widely used to learn java. Some might charge a fee but some are totally free. Just by clicking their names you will be redirected to them.
Or if you prefer learning from books then click 10 Best Java Books ( 2018 Updated )
Also Read –Ultimate Java Programming Cheatsheet
So this was all regarding Java if you find this helpful let us know in the comment section below. Would love to hear that. Stay tuned for more.
Object-oriented programming offers a sustainable way to write spaghetti code. It lets you accrete programs as a series of patches.
― Paul Graham
Fundamentals of object-oriented programming
Object-oriented programming is a programming paradigm where everything is represented as an object.
Objects pass messages to each other. Each object decides what to do with a received message. OOP focuses on each object’s states and behaviors.
What Are Objects?
An object is an entity that has states and behaviors.
For example, dog, cat, and vehicle. To illustrate, a dog has states like age, color, name, and behaviors like eating, sleeping, and running.
State tells us how the object looks or what properties it has.
Behavior tells us what the object does.
We can actually represent a real world dog in a program as a software object by defining its states and behaviors.
Software objects are the actual representation of real world objects. Memory is allocated in RAM whenever creating a logical object.
An object is also referred to an instance of a class. Instantiating a class means the same thing as creating an object.
The important thing to remember when creating an object is: the reference type should be the same type or a super type of the object type. We’ll see what a reference type is later in this article.
What Are Classes?
A class is a template or blueprint from which objects are created.
Imagine a class as a cookie-cutter and objects as cookies.
Classes define states as instance variables and behaviors as instance methods.
Instance variables are also known as member variables.
Classes don't consume any space.
To give you an idea about classes and objects, let's create a Cat class that represents states and behaviors of real world Cat.
Now we have successfully defined a template for Cat. Let’s say we have two cats named Thor and Rambo.
How can we define them in our program?
First, we need to create two objects of the Cat class.
Next, we’ll define their states and behaviors.
Like the above code examples, we can define our class, instantiate it (create objects) and specify the states and behaviors for those objects.
Now, we have covered the basics of object-oriented programming. Let's move on to the principles of object-oriented programming.
Principles of object-oriented programming
These are the four main principles of the object-oriented programming paradigm. Understanding them is essential to becoming a successful programmer.
- Encapsulation
- Inheritance
- Abstraction
- Polymorphism
Now let's look at each in more detail.
Encapsulation
Encapsulation is a process of wrapping code and data together into a single unit.
It's just like a capsule that contains a mix of several medicines, and is a technique that helps keep instance variables protected.
This can be achieved by using private
access modifiers that can’t be accessed by anything outside the class. In order to access private states safely, we have to provide public getter and setter methods. (In Java, these methods should follow JavaBeans naming standards.)
Let’s say there is a record shop that sells music albums of different artists and a stock keeper who manages them.
If you look at figure 4, the StockKeeper
class can access the Album
class’s states directly as Album
class’s states are set to public
.
What if the stock keeper creates an album and sets states to negative values? This can be done intentionally or unintentionally by a stock keeper.
To illustrate, let’s see a sample Java program that explains the above diagram and statement.
Album class:
StockKeeper class:
Main class:
Output:
The album’s price and number of copies can’t be negative values. How can we avoid this situation? This is where we use encapsulation.
In this scenario, we can block the stock keeper from assigning negative values. If they attempt to assign negative values for the album’s price and number of copies, we’ll assign them as 0.0 and 0.
Album class:
StockKeeper class:
Main class:
Output:
With encapsulation, we’ve blocked our stock keeper from assigning negative values, meaning we have control over the data.
Advantages of encapsulation in Java
- We can make a class read-only or write-only: for a read-only class, we should provide only a getter method. For a write-only class, we should provide only a setter method.
- Control over the data: we can control the data by providing logic to setter methods, just like we restricted the stock keeper from assigning negative values in the above example.
- Data hiding: other classes can’t access private members of a class directly.
Inheritance
Let’s say that the record shop we discussed above also sells Blu-ray movies.
As you can see in the above diagram, there are many common states and behaviors (common code) between Album
and Movie
.
When implementing this class diagram into code, are you going to write (or copy & paste) the entire code for Movie
? If you do, you are repeating yourself. How can you avoid code duplication?
This is where we use inheritance.
Inheritance is a mechanism in which one object acquires all the states and behaviors of a parent object.
Inheritance uses a parent-child relationship (IS-A relationship).
So what exactly is inherited?
Visibility/access modifiers impact what gets inherited from one class to another.
In Java, as a rule of thumb we make instance variables private
and instance methods public
.
In this case, we can safely say that the following are inherited:
- public instance methods.
- private instance variables (private instance variables can be accessed only through public getter and setter methods).
Types of Inheritance in Java
There are five types of inheritance in Java. They are single, multilevel, hierarchical, multiple, and hybrid.
Class allows single, multilevel and hierarchical inheritances. Interface allows multiple and hybrid inheritances.
A class can extend only one class however it can implement any number of interfaces. An interface can extend more than one interfaces.
Relationships
I. IS-A relationship
An IS-A relationship refers to inheritance or implementation.
a. Generalization
Generalization uses an IS-A relationship from a specialization class to generalization class.
II. HAS-A relationship
An instance of one class HAS-A reference to an instance of another class.
a. Aggregation
In this relationship, the existence of class A and B are not dependent on each other.
For this aggregation part, we going to see an example of the Student
class and the ContactInfo
class.
Student
HAS-A ContactInfo
. ContactInfo
can be used in other places – for example, a company's Employee
class can also use this ContactInfo
class. So Student
can exist without ContactInfo
and ContactInfo
can exist without Student
. This type of relationship is known as aggregation.
b. Composition
In this relationship, class B can not exist without class A – but class A can exist without class B.
To give you an idea about composition, let's see an example of the Student
class and the StudentId
class.
Student
HAS-A StudentId
. Student
can exist without StudentId
but StudentId
can not exist without Student
. This type of relationship is known as composition.
Now, let’s back to our previous record shop example that we discussed above.
We can implement this diagram in Java to avoid code duplication.
Advantages of inheritance
- Code reuse: the child class inherits all instance members of the parent class.
- You have more flexibility to change code: changing code in place is enough.
- You can use polymorphism: method overriding requires IS-A relationship.
Abstraction
Abstraction is a process of hiding the implementation details and showing only functionality to the user.
A common example of abstraction is that pressing the accelerator will increase the speed of a car. But the driver doesn’t know how pressing the accelerator increases the speed – they don't have to know that.
Technically abstract means something incomplete or to be completed later.
In Java, we can achieve abstraction in two ways: abstract class (0 to 100%) and interface (100%).
The keyword abstract
can be applied to classes and methods. abstract
and final
or static
can never be together.
I. Abstract class
An abstract class is one that contains the keyword abstract
.
Abstract classes can’t be instantiated (can’t create objects of abstract classes). They can have constructors, static methods, and final methods.
II. Abstract methods
An abstract method is one that contains the keyword abstract
.
An abstract method doesn’t have implementation (no method body and ends up with a semi colon). It shouldn’t be marked as private
.
III. Abstract class and Abstract methods
- If at least one abstract method exists inside a class then the whole class should be abstract.
- We can have an abstract class with no abstract methods.
- We can have any number of abstract as well as non-abstract methods inside an abstract class at the same time.
- The first concrete sub class of an abstract class must provide implementation to all abstract methods.
- If this doesn't happen, then the sub class also should be marked as abstract.
In a real world scenario, the implementation will be provided by someone who is unknown to end users. Users don’t know the implementation class and the actual implementation.
Let’s consider an example of abstract concept usage.
When do we want to mark a class as abstract?
- To force sub classes to implement abstract methods.
- To stop having actual objects of that class.
- To keep having a class reference.
- To retain common class code.
Interface
An interface is a blueprint of a class.
An interface is 100% abstract. No constructors are allowed here. It represents an IS-A relationship.
Java Programming Software Download
NOTE: Interfaces only define required methods. We can not retain common code.
An interface can have only abstract methods, not concrete methods. By default, interface methods are public
and abstract
. So inside the interface, we don’t need to specify public
and abstract
.
So when a class implements an interface’s method without specifying the access level of that method, the compiler will throw an error stating “Cannot reduce the visibility of the inherited method from interface”
. So that implemented method’s access level must be set to public
. Add url calendar to outlook mac.
By default, interface variables are public
, static
and final
.
For instance:
Let’s see an example that explains the interface concept:
Default and Static methods in Interfaces
Usually we implement interface methods in a separate class. Let’s say we are required to add a new method in an interface. Then we must implement that method in that separate class, too.
To overcome this issue Java 8 introduced default and static methods that implement methods inside an interface, unlike abstract methods.
- Default method
- Static method
Similar to static methods of classes, we can call them by their interface’s name.
- Marker interface
It’s an empty interface. For instance, Serializable, Cloneable, and Remote interfaces.
Advantages of interfaces
Java Programming Software Mac Beginners Free
- They help us use multiple inheritance in Java.
- They provide abstraction.
- They provide loose coupling: objects are independent from one another.
When do we want to change a class to an interface?
- To force sub classes to implement abstract methods.
- To stop having actual objects of that class.
- To keep having a class reference.
NOTE: Remember, we can’t retain common code inside the interface.
If you want to define potentially required methods and common code, use an abstract class.
If you just want to define a required method, use an interface.
Polymorphism
Polymorphism is the ability of an object to take on many forms.
Polymorphism in OOP occurs when a super class references a sub class object.
All Java objects are considered to be polymorphic as they share more than one IS-A relationship (at least all objects will pass the IS-A test for their own type and for the class Object).
We can access an object through a reference variable. A reference variable can be of only one type. Once declared, the type of a reference variable cannot be changed.
A reference variable can be declared as a class or interface type.
A single object can be referred to by reference variables of many different types as long as they are the same type or a super type of the object.
Method overloading
If a class has multiple methods that have same name but different parameters, this is known as method overloading.
Method overloading rules:
- Must have a different parameter list.
- May have different return types.
- May have different access modifiers.
- May throw different exceptions.
NOTE: Static methods can also be overloaded.
NOTE: We can overload the main() method but the Java Virtual Machine (JVM) calls the main() method that receives String arrays as arguments.
Rules to follow for polymorphism
Compile time rules
- Compiler only knows reference type.
- It can only look in reference type for methods.
- Outputs a method signature.
Run time rules
- At runtime, JVM follows exact runtime type (object type) to find method.
- Must match compile time method signature to method in actual object’s class.
Method overriding
If a subclass has the same method as declared in the super class, this is known as method overriding.
Method overriding rules:
- Must have the same parameter list.
- Must have the same return type: although a covariant return allows us to change the return type of the overridden method.
- Must not have a more restrictive access modifier: may have a less restrictive access modifier.
- Must not throw new or broader checked exceptions: may throw narrower checked exceptions and may throw any unchecked exception.
- Only inherited methods may be overridden (must have IS-A relationship).
Example for method overriding: Brother mfc 440cn software for mac.
NOTE: Static methods can’t be overridden because methods are overridden at run time. Static methods are associated with classes while instance methods are associated with objects. So in Java, the main()
method also can’t be overridden.
NOTE: Constructors can be overloaded but not overridden.
Object types and reference types
In Person mary = new Student();
, this object creation is perfectly fine.
mary
is a Person
type reference variable and new Student()
will create a new Student
object.
mary
can’t access study()
in compile time because the compiler only knows the reference type. Since there is no study()
in the reference type class, it can’t access it. But in runtime mary
is going to be the Student
type (Runtime type/ object type).
Please review this post for more information on runtime types.
In this case, we can convince the compiler by saying “at runtime, mary
will be Student
type, so please allow me to call it”. How can we convince the compiler like this? This is where we use casting.
We can make mary
a Student
type in compile time and can call study()
by casting it.
We’ll learn about casting next.
Object type casting
Java type casting is classified into two types:
- Widening casting (implicit): automatic type conversion.
- Narrowing casting (explicit): need explicit conversion.
In primitives, long
is a larger type than int
. Like in objects, the parent class is a larger type than the child class.
The reference variable only refers to an object. Casting a reference variable doesn’t change the object on the heap but it labels the same object in another way by means of instance members accessibility.
I. Widening casting
II. Narrowing casting
We have to be careful when narrowing. When narrowing, we convince the compiler to compile without any error. If we convince it wrongly, we will get a run time error (usually ClassCastException
).
In order to perform narrowing correctly, we use the instanceof
operator. It checks for an IS-A relationship.
As I already stated before, we must remember one important thing when creating an object using the new
keyword: the reference type should be the same type or a super type of the object type.
Conclusion
Thank you everyone for reading. I hope this article helped you.
I strongly encourage you to read more related articles on OOP.
Checkout my original article series on Medium: Object-oriented programming principles in Java
Please feel free to let me know if you have any questions.
Dream is not that which you see while sleeping it is something that does not let you sleep.
― A P J Abdul Kalam, Wings of Fire: An Autobiography
Thank you.
Happy Coding!