Search This Blog

Saturday 27 May 2017

Java Source File Structure

Java Source File Structure

A Java source file can have the following elements that, if present, must be specified in the following order
  • An optional package declaration to specify a package name.
  • Zero or more import declarations. Since import declarations introduce class and interface names in the source code, they must be placed before any type declarations.
  • Any number of top-level class and interface declarations. Since these declarations belong to the same package, they are said to be defined at the top level, which is the package level.
  • The classes and interfaces can be defined in any order. Class and interface declarations are collectively known as type declarations. Technically, a source file need not have any such definitions, but that is hardly useful.


The Java 2 SDK imposes the restriction that at the most one public class definition per source file can be defined. If a public class is defined, the file name must match this public class. If the public class name is MyApp, then the file name must be MyApp.java.



The main() Method 
  • The Java interpreter executes a method called main in the class specified on the command line.
  • Any class can have a main() method, but only the main() method of the class specified to the Java interpreter is executed to start a Java application.
  • The main() method must have public accessibility so that the interpreter can call it.
  • It is a static method belonging to the class, so that no object of the class is required to start the execution.
  • It does not return a value, that is, it is declared void.
  • It always has an array of String objects as its only formal parameter. This array contains any arguments passed to the program on the command line.
  • All this adds up to the definition of the main() method:

public static void main(String[] args) { // ... }

Wednesday 24 May 2017

Java Language Fundamentals

Java Language Fundamentals

Identifiers
  • A name in a program is called an identifier.
  • Identifiers can be used to denote classes, methods, variables, and labels.
  • In Java an identifier is composed of a sequence of characters, where each character can be either a letter, a digit, a connecting punctuation (such as underscore _), or any currency symbol (such as $, ¢, ¥, or £). However, the first character in an identifier cannot be a digit.
  • Identifiers in Java are case sensitive, for example, price and Price are two different identifiers.

Examples of Legal Identifiers: number, Number, sum_$, bingo, $$_100, mål, grüß 
Examples of Illegal Identifiers: 48chevy, all@hands, grand-sum

Keywords
  • Keywords are reserved identifiers that are predefined in the language and cannot be used to denote other entities.
  • All the keywords are in lowercase, and incorrect usage results in compilation errors.



Literals
  • A literal denotes a constant value, that is, the value a literal represents remains unchanged in the program. Identifiers can be used to denote classes, methods, variables, and labels.
  • Literals represent numerical (integer or floating-point), character, boolean or string values. In addition, there is the literal null that represents the null reference.

Examples of literals
  • Integer 2000, 0, -7 
  • Floating-point 3.14, -3.14, .5, 0.5
  • Character 'a‘, 'A‘, '0‘, ':‘, '-‘, ')' 
  • Boolean true, false 
  • String "abba“, "3.14“, "for“, "a piece of the action“

Comments
A program can be documented by inserting comments at relevant places. These comments are for documentation purposes and are ignored by the compiler.
Java provides three types of comments to document a program:
  • A single-line comment: // ... to the end of the line
  • A multiple-line comment: /* ... */
  • A documentation (Javadoc) comment: /** ... */

Primitive data types
Primitive data types in Java can be divided into three main categories:
  • Integral types— represent signed integers (byte, short, int, long) and unsigned character values (char)
  • Floating-point types (float, double)— represent fractional signed numbers
  • Boolean type (boolean)— represent logical values


Primitive data values are not objects. Each primitive data type defines the range of values in the data type, and operations on these values are defined by special operators in the language.

Variable declaration
A variable stores a value of a particular type. A variable has a name, a type, and a value associated with it. In Java, variables can only store values of primitive data types and references to objects. Variables that store references to objects are called reference variables.

Declaring and Initializing Variables
Variable declarations are used to specify the type and the name of variables. This implicitly determines their memory allocation and the values that can be stored in them.
  • char a, b, c; // a, b and c are character variables.
  • double area; // area is a floating-point variable.
  • boolean flag; // flag is a boolean variable.

A declaration can also include initialization code to specify an appropriate initial value for the variable:
  • int i = 10; // i is an int variable with initial value 10.
  • long big = 2147483648L; // big is a long variable with specified initial value.

Object Reference Variables, An object reference is a value that denotes an object in Java. Such reference values can be stored in variables and used to manipulate the object denoted by the reference value. Before we can use a reference variable to manipulate an object, it must be declared and initialized with the reference value of the object.
  • Pizza yummyPizza; // Variable yummyPizza can reference objects of class Pizza.
  • Hamburger bigOne; // Variable bigOne can reference objects of class Hamburger
  • Pizza yummyPizza = new Pizza("Hot&Spicy"); // Declaration with initializer.

Monday 22 May 2017

Basic elements of a Java Program

Basic elements of a Java Program

The basic elements of a Java application are introduced in this post.

Basic elements of a Java Program - Class
A class denotes a category of objects, and acts as a blueprint for creating such objects. A class models an abstraction by defining the properties and behaviors for the objects representing the abstraction. An object exhibits the properties and behaviors defined by its class. The properties of an object of a class are also called attributes, and are defined by fields in Java. A field in a class definition is a variable which can store a value that represents a particular property.  The behaviors of an object of a class are also known as operations, and are defined using methods in Java. Fields and methods in a class definition are collectively called members.

Basic elements of a Java Program - Object
The process of creating objects from a class is called instantiation. An object is an instance of a class. The object is constructed using the class as a blueprint and is a concrete instance of the abstraction that the class represents. An object must be created before it can be used in a program. In Java, objects are manipulated through object references. Each object has a unique identity and has its own copy of the fields declared in the class definition.

Instance Member
The fields of an object are called instance variables. The values of the instance variables in an object comprise its state. Two distinct objects can have the same state, if their instance variables have the same values. The methods of an object define its behavior. These methods are called instance methods. It is important to note that these methods pertain to each object of the class. Instance variables and instance methods, which belong to objects, are collectively called instance members.

Method invocation
Objects communicate by message passing. This means that an object can be made to exhibit a particular behavior by invoking the appropriate operation on the object. In Java, this is done by calling a method on the object using the dot '.' operator.  The dot '.' notation also can be used with a reference to access fields of an object.

Static member
In some cases, certain members should only belong to the class, and not be part of any object created from the class. Such a field is called a static variable. It belongs to the class, and not to any object of the class. A static variable is initialized when the class is loaded at runtime. Similarly, a class can have static methods that belong only to the class, and not to any objects of the class.  Static variables and static methods are collectively known as static members, and are distinguished from instance members in a class definition by the keyword static in their declaration.

Java Program
A Java program is a collection of one or more classes, with one of them containing the program's execution starting point. A Java source file can contain more than one class definition. The Java 2 SDK enforces the rule that at the most one class in the source file has public accessibility. The name of the source file is comprised of the name of this public class with .java as extension. Each class definition in a source file is compiled into a separate class file, containing Java byte code. The name of this file is comprised of the name of the class with .class as an extension. All programs must be compiled before they can be run. 
An application is what is normally called a program: source code that is compiled and directly executed. In order to create an application in Java, the program must have a class that defines a method called main. The main() method in the class is the starting point for the execution of any application.

public static void main(String [] args)
The main() method has public accessibility, that is, it is accessible from any class. The keyword static means the method belongs to the class. The keyword void means the method does not return any value. The parameter list, String[] args, is an array of strings used to pass information to the main() method when the application is started.

Wednesday 17 May 2017

Introduction to Java

Introduction to Java

Java is a general-purpose computer programming language that is concurrent, class-based and object-oriented. Java is intended to let application developers "write once, run anywhere" (WORA) meaning that compiled Java code can run on all platforms that support Java without the need for recompilation. 
Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of computer architecture. As of 2016, Java is one of the most popular programming languages in use, particularly for client-server web applications. 
Java was originally developed by James Gosling at Sun Microsystems (later acquired by Oracle Corporation) and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++, but it has fewer low-level facilities than either of them.

Principles
There were five primary goals in the creation of the Java language  
  1. It must be "simple, object-oriented, and familiar".
  2. It must be "robust and secure".
  3. It must be "architecture-neutral and portable".
  4. It must execute with "high performance".
  5. It must be "interpreted, threaded, and dynamic".

Java Virtual Machine (JVM)
Oracle provides a set of programming tools such as javac, java and others in a bundle called Java SDK(JDK) for different platforms (Windows, Linux, etc)
Oracle also provides a runtime bundle with just the JVM (Java Virtual machine) when programming tools are not needed.

JVM is a program that runs on a given platform and takes the bytecode as input and interprets them just as if it were a physical processor executing machine code. javac compiler transforms the Java language source code to bytecode that runs in the JVM.

With most programming languages you either compile or interpret a program so that you can run it on your computer. The Java programming language is unusual in that a program is both compiled and interpreted. With the compiler, first you translate a program into an intermediate language called Java bytecodes – the platform independent codes interpreted by the interpreter on the Java platform. The interpreter parses and runs each Java bytecode instruction on the computer. Compilation happens just once; interpretation occurs each time the program is executed.




You can think of the Java bytecodes as the machine code instructions for the Java Virtual Machine(Java VM). Every JVM interpreter, whether it’s a development tool or a web browser that can run applets, is an implementation of the Java VM.
Java byte codes help make “write once, run anywhere” possible. You can compile your program into bytecodes on any platform that has a Java compiler. The bytecodes can then be put on any implementation of the Java VM. That means that as long as a computer has a Java VM, the same program written in the Java programming language can run on Windows, a Solaris workstation or an iMac.

Monday 15 May 2017

What is MongoDB?

What is MongoDB?

MongoDB is a document database with the scalability and flexibility that you want with the querying and indexing that you need
MongoDB is a free and open-source cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schemas. MongoDB is developed by MongoDB Inc. and is free and open-source, published under a combination of the GNU Affero General Public License and the Apache License.

Document Database
A record in MongoDB is a document, which is a data structure composed of field and value pairs. MongoDB documents are similar to JSON objects. The values of fields may include other documents, arrays, and arrays of documents.
{
name :  “Ravi” field: value
age: 26     field: value
}

Key Features

High Performance
MongoDB provides high performance data persistence. In particular, Support for embedded data models reduces I/O activity on database system.

Rich Query Language
MongoDB supports a rich query language to support read and write operations including Create, Retrieve, Update, Delete (CRUD) 

High Availability
MongoDB’s replication facility, called replica set, provides:
automatic failover 
data redundancy.
A replica set is a group of MongoDB servers that maintain the same data set, providing redundancy and increasing data availability.

Horizontal Scalability
MongoDB provides horizontal scalability as part of its core functionality:
Sharding distributes data across a cluster of machines.
MongoDB 3.4 supports creating zones of data based on the shard key. In a balanced cluster, MongoDB directs reads and writes covered by a zone only to those shards inside the zone.

Support for Multiple Storage Engines
MongoDB supports multiple storage engines, such as:
WiredTiger Storage Engine and
MMAPv1 Storage Engine.

Indexing
Fields in a MongoDB document can be indexed with primary and secondary indices.

File storage
MongoDB can be used as a file system with load balancing and data replication features over multiple machines for storing files.


Server-side JavaScript execution
JavaScript can be used in queries, aggregation functions (such as MapReduce), and sent directly to the database to be executed.