Thursday, 28 December 2017

Overview of Scrum

Scrum is one of the most popular Agile methodologies. It is an adaptive, iterative, fast, flexible, and effective methodology designed to deliver significant value quickly and throughout a project. Scrum ensures transparency in communication and creates an environment of collective accountability and continuous progress. The Scrum framework,  is structured in such a way that it supports product and service development in all types of industries and in any type of project, irrespective of its complexity.

The key strength of Scrum lies in its use of cross-functional, self-organized, and empowered teams who divide their work into short, concentrated work cycles called Sprints

Sprint Flow

The Scrum cycle begins with a Stakeholder Meeting, during which the Project Vision is created. The Product Owner then develops a Prioritized Product Backlog which contains a prioritized list of business and project requirements written in the form of User Stories. Each Sprint begins with a Sprint Planning Meeting during which high priority User Stories are considered for inclusion in the Sprint. A Sprint generally lasts between one and six weeks and involves the Scrum Team working to create potentially shippable Deliverables or product increments. During the Sprint, short, highly focused Daily Standup Meetings are conducted where team members discuss daily progress. Toward the end of the Sprint, a Sprint Review Meeting is held during which the Product Owner and relevant stakeholders are provided a demonstration of the Deliverables. The Product Owner accepts the  Deliverables only if they meet the predefined Acceptance Criteria. The Sprint cycle ends with a Retrospect Sprint Meeting where the team discusses ways to improve processes and performance as they move forward into the subsequent Sprint.

Some of the key benefits of using Scrum in any project are:

  • Adaptability—Empirical process control and iterative delivery make projects adaptable and open to incorporating change.
  • Transparency—All information radiators like a Scrumboard and Sprint Burndown Chart are shared, leading to an open work environment.
  • Continuous Feedback—Continuous feedback is provided through the Conduct Daily   Standup, and Demonstrate and Validate Sprint processes.
  • Continuous Improvement—The deliverables are improved progressively Sprint by Sprint, through the Groom Prioritized Product Backlog process.
  • Continuous Delivery of Value—Iterative processes enable the continuous delivery of value through the Ship Deliverables process as frequently as the customer requires.
  • Sustainable Pace—Scrum processes are designed such that the people involved can work at a sustainable pace that they can, in theory, continue indefinitely.
  • Early Delivery of High Value—The Create Prioritized Product Backlog process ensures that the highest value requirements of the customer are satisfied first.
  • Efficient Development Process—Time-boxing and minimizing non-essential work leads to higher efficiency levels.
  • Motivation—The Conduct Daily Standup and Retrospect Sprint processes lead to greater levels of motivation among employees.
  • Faster Problem Resolution—Collaboration and colocation of cross-functional teams lead to faster problem solving.
  • Effective Deliverables—The Create Prioritized Product Backlog process and regular reviews after creating deliverables ensures effective deliverables to the customer.
  • Customer Centric—Emphasis on business value and having a collaborative approach to stakeholders ensures a customer-oriented framework.
  • High Trust EnvironmentConduct Daily Standup and Retrospect Sprint processes promote transparency and collaboration, leading to a high trust work environment ensuring low friction among employees.  
  • Collective Ownership—The Approve, Estimate, and Commit User Stories process allows team members to take ownership of the project and their work leading to better quality.
  • High Velocity—A collaborative framework enables highly skilled cross-functional teams to achieve their full potential and high velocity.
  • Innovative Environment—The Retrospect Sprint and Retrospect Project processes create an environment of introspection, learning, and adaptability leading to an innovative and creative work environment.

Tuesday, 19 December 2017

Securing RESTful Web Services

Securing RESTful Web Services

This post describes how to secure Web services that conform to the Representational State Transfer (REST) architectural style using Java API for RESTful Web Services (JAX-RS).

We can secure the RESTful Web services using one of the following methods
  • Updating the web.xml deployment descriptor to define security configuration.
  • Using the  interface to implement security programmatically.
  • Applying annotations to your JAX-RS classes. 

Securing RESTful Web Services Using web.xml

We secure RESTful Web services using the web.xml deployment descriptor as we would for other Java EE Web applications.
To secure your RESTful Web service using basic authentication, perform the following steps:
  1. Define a <security-constraint> for each set of RESTful resources (URIs) that you plan to protect.
  2. Use the <login-config> element to define the type of authentication you want to use and the security realm to which the security constraints will be applied. 
  3. Define one or more security roles using the <security-role> tag and map them to the security constraints defined in step 1. 
  4. To enable encryption, add the <user-data-constraint> element and set the <transport-guarantee> subelement to CONFIDENTIAL 


Securing RESTful Web Services Using SecurityContext

The  interface provides access to security-related information for a request. The SecurityContext provides functionality similar to javax.servlet.http.HttpServletRequest, enabling you to access the following security-related  information:
  1. object containing the name of the user making the request.
  2. Authentication type used to secure the resource, such as BASIC_AUTH, FORM_AUTH, and CLIENT_CERT_AUTH.
  3. Whether the authenticated user is included in a particular role.
  4. Whether the request was made using a secure channel, such as HTTPS.

You access the SecurityContext  by injecting an instance into a class field, setter method, or method parameter using the annotation.



@Stateless(name = "JaxRSStatelessEJB")
public class MyApp {
        public String sayHello(@Context SecurityContext sc) {
                if (sc.isUserInRole("admin"))  return "Hello World!";
                throw new SecurityException("User is unauthorized.");

Securing RESTful Web Services Using Annotations

The  package provides annotations, defined below, that you can use to secure your RESTful Web services.
Restful Annotations
Restful Annotations

import javax.annotation.Security.RolesAllowed;

@RolesAllowed({"ADMIN", "ORG1"})
public class helloWorld {

   public String sayHello() {
      return "Hello World!";

Thursday, 14 December 2017

Check out uCertify’s new release Java Live Lab

uCertify’s Java Live Lab

Gain hands-on expertise in 1Z0-808 and 1Z0-809 exam with Java Live Lab. Live-Lab is a real computer equipment, networked together and conveniently accessible over the internet using virtualization. A live-lab has equipment such as a computer, server, switch or router in it that a user is free to configure. Java Live Lab focuses on all the objectives of 1Z0-808 and 1Z0-809 exam. It validates the expertise and technical knowledge required for Java, generics and collections, I/O fundamentals, file I/O, concurrency, JDBC, lambdas and much more.
Online labs can be used to supplement training. uCertify labs are an inexpensive & safe way to explore and learn. uCertify labs are versatile – labs simulate real-world, hardware, software & command line interface environments and can be mapped to any text-book, course & training.

Java Live Lab provides skills and understanding of 2 exams: 1Z0-808 and 1Z0-809. 1Z0-808 exam: 1Z0-808 exam covers Java basics, Java data types, array, loop constructs, methods, encapsulation and so on. 1Z0-809 exam: The 1Z0-809 exam covers functional programming; basics of object-oriented programming; application of knowledge in database work, and so on.

Wednesday, 16 August 2017

Five IT Certifications that will take your Tech Career a step forward

Five IT Certifications that will take your Tech Career a step forward

Want to know which IT certifications will enhance your job profile and will take your tech career a step forward? Here, we have brought the top five IT certifications to boost up your career:
1. Cisco Certified Network Associate (CCNA): CCNA certification validates a professional’s expertise in configuring, operating, and troubleshooting medium-level routed and switched networks. It also includes the validation and application of connections through distant sites using WAN.
Certification process: To become a CCNA certified, you need to pass a 90-minutes exam consisting of about 50-60 questions. The question format for this exam is multiple-choice, single-answer, drag and drop, fill in the blank and so on. The test costs around USD 295.
Job titles: Network engineer, network administrator, and systems administrator.
2. CompTIA A+: CompTIA A+ certification is an industrially recognized vendor-neutral certification designed to ensure knowledge and skills for entry-level IT professionals to configure, install, and maintain devices, PCs and software for end users, assemble components based on customer requirements, and so on.
Certification process: To become A+ certified, professionals have to pass two exams: 220-901 and 220-902. The question format for this exam is multiple choice and performance-based. The exam cost is approximately USD 200.
Job titles: In-home support specialist, desktop support technician, and help desk technician.
3. Network+: Network+ is a globally recognized credential designed to ensure technical knowledge required for foundation-level IT network practitioners to troubleshoot, manage, install, maintain, operate and configure basic network infrastructure, basic design principles, describe networking technologies, and adhere to wiring standards and use testing tools.
Certification process: To become a Network+ certified, professionals need to pass a 90-minutes exam consisting of 90 questions. The exam costs around USD 285.
Job titles: Helpdesk technician, information technology specialist, and information technology technician.
4. Certified Information Systems Security Professional (CISSP): ISC2 CISSP is an advanced-level certification designed to ensure skills and knowledge required for IT security professionals to engineer, implement, manage, and design the overall information security program to protect organizations from growing sophisticated attacks.
Certification process: The CISSP certification exam includes eight topics. It contains 250 questions which have to be completed in six hours. The exam cost is around USD 600.
Most common job titles: Information technology auditor, security analyst, information security analyst, and so on.
5. Microsoft Certified Systems Engineer (MCSE): Microsoft Certified Systems Engineer (MCSE) certification is designed to ensure proficiency and skills to use Windows Server, System Center, and other Microsoft technologies. The MCSE exam validates your ability to design systems and complex solutions, solve difficult problems requiring innovative resolutions, build and deploy, as well as operate, maintain and optimize Microsoft-based systems.
Certification process: The exam has a five-step process that contains various question formats such as multiple choice, drag-and-drop, and simulation problems. The exam costs around USD 150 regardless of the specialization.
Job titles: Systems administrator, field systems technician, and systems engineer.
So, what are you waiting for? Earning one of these top IT certifications will enhance your IT career and increase the job proficiency. Start your preparation now!

Monday, 19 June 2017

Other Modifiers for Members in Java

Other Modifiers for Members in Java

Certain characteristics of fields and/or methods can be specified in their declarations by the following keywords:

static Members: The declaration of static members is prefixed by the keyword static to distinguish them from instance members.
Static variables (also called class variables) only exist in the class they are defined in. They are not instantiated when an instance of the class is created. In other words, the values of these variables are not a part of the state of any object.
Static methods are also known as class methods. A static method in a class can directly access other static members in the class. It cannot access instance (i.e., non-static) members of the class, as there is no notion of an object associated with a static method.

final Members: A final variable is a constant, despite being called a variable. Its value cannot be changed once it has been initialized. This applies to instance, static and local variables, including parameters that are declared final.
A final variable of a primitive data type cannot change its value once it has been initialized.
A final variable of a reference type cannot change its reference value once it has been initialized, but the state of the object it denotes can still be changed.
A final method in a class is complete (i.e., has an implementation) and cannot be overridden in any subclass. Subclasses are then restricted in changing the behavior of the method.

abstract Methods: An abstract method does not have an implementation; that is, no method body is defined for an abstract method, only the method prototype is provided in the class definition. Its class is then abstract (i.e., incomplete) and must be explicitly declared as such. Subclasses of an abstract class must then provide the method implementation; otherwise, they are also abstract.

synchronized Methods: Several threads can be executing in a program. They might try to execute several methods on the same object simultaneously. If it is desired that only one thread at a time can execute a method in the object, the methods can be declared synchronized. Their execution is then mutually exclusive among all threads. At any given time, at the most one thread can be executing a synchronized method on an object. This discussion also applies to static synchronized methods of a class.

native Methods:Native methods are also called foreign methods. Their implementation is not defined in Java but in another programming language, for example, C or C++. Such a method can be declared as a member in a Java class definition. Since its implementation appears elsewhere, only the method prototype is specified in the class definition. The method prototype is prefixed with the keyword native. 

transient Fields: Objects can be stored using serialization. Serialization transforms objects into an output format that is conducive for storing objects. Objects can later be retrieved in the same state as when they were serialized, meaning that all fields included in the serialization will have the same values as at the time of serialization. Such objects are said to be persistent.
A field can be specified as transient in the class declaration, indicating that its value should not be saved when objects of the class are written to persistent storage.

volatile Fields: During execution, compiled code might cache the values of fields for efficiency reasons. Since multiple threads can access the same field, it is vital that caching is not allowed to cause inconsistencies when reading and writing the value in the field. The volatile modifier can be used to inform the compiler that it should not attempt to perform optimizations on the field, which could cause unpredictable results when the field is accessed by multiple threads.

Member Accessibility Modifiers in Java

Member Accessibility Modifiers in Java

By specifying member accessibility modifiers, a class can control what information is accessible to clients (i.e., other classes). These modifiers help a class to define a contract so that clients know exactly what services are offered by the class.
Accessibility of members can be one of the following:
  • public
  • protected
  • default (also called package accessibility)
  • private

A member has package or default accessibility when no accessibility modifier is specified. The member accessibility modifier only has meaning if the class (or one of its sub classes) is accessible to the client. Also, note that only one accessibility modifier can be specified for a member.

public Members: Public accessibility is the least restrictive of all the accessibility modifiers. A public member is accessible from anywhere, both in the package containing its class and in other packages where this class is visible. This is true for both instance and static members.(eg SuperclassA, SubclassB)

protected Members: A protected member is accessible in all classes in the package containing its class, and by all subclasses of its class in any package where this class is visible. In other words, non-subclasses in other packages cannot access protected members from other packages. It is less restrictive than the default accessibility(eg SuperclassA1, SubclassB1).

Default Accessibility for Members: When no member accessibility modifier is specified, the member is only accessible by other classes in its class's package. Even if its class is visible in another (possibly nested) package, the member is not accessible there. Default member accessibility is more restrictive than protected member accessibility.(eg SuperclassA2, SubclassB2)

private Members: This is the most restrictive of all the accessibility modifiers. Private members are not accessible from any other class. This also applies to subclasses, whether they are in the same package or not. Since they are not accessible by simple name in a subclass, they are also not inherited by the subclass. (eg SuperclassA3)

Friday, 9 June 2017

The five most desired certifications of 2017

The five most desired certifications of 2017

Being certified is the foolproof method to enhance your career a skills in the Information Technology industry. If you are one of those who considers certification as their career investment, then you must know which certifications are high in demand in 2017:

1. ISC)² CISSP: The (ISC)²’s CISSP certification is an industry recognized credential and is designed to certify the competency of IT professionals to design, engineer, implement, and manage the overall information security program of an organization. The CISSP exam tests the candidate’s understanding and knowledge in eight domains of the CISSP CBK, which are, Security and Risk Management, Asset Security, Security Engineering, Communications and Network Security, Identity and Access Management, Security Assessment and Testing, Security Operations, and Software Development Security.

According to (ISC)², as of October 2016, only 89,932 people hold the certification worldwide. Earlier this month, the surveyed a group of 3,872 CISSPs and found that their average yearly salary ranged from USD 54,820 to USD 152,311 depending on the candidate’s location, years of experience and job title.

2. Certified in Risk and Information Systems Control (CRISC): The CRISC certification exam incorporates four major risk subject areas: identification, assessment, control monitoring and reporting, and response and mitigation. If the professional is focused on working in this area or if he has experience in the area and wants to be certified, he must go for CRISC exam.

According to the data from Global Knowledge’s 2017 IT Skills and Salary Survey, the average annual salary of Information Systems Control certified is USD 131,298.

3. Certified Information Systems Auditor (CISA): ISACA CISA certification exam is intended for candidates interested in information systems audit, control, and security. This exam validates candidate’s experience and knowledge in the field of information assets protection; IT governance and management; systems audit; control and security and so on. CISA certification is a great benchmark for those who provide valuable services to an organization’s IT, legal, and accounting departments.

CISA is among the highest-paying IT certifications based on the 2016 IT Skills and Salary Report conducted by Global Knowledge, with an average yearly salary of USD 112,931.

4. Project Management Professional (PMP): PMP Certification is every IT professional’s choice because it helps them apply their knowledge across a variety of industries. The skills of professionals to apply project management principles provides them a solid foot in almost every industry and opens the opportunity for management level positions. As the demand for skilled project managers has increased, candidates who hold the PMP credential are well positioned to provide the professional skills necessary to lead project teams and achieve successful project results.

As per the 7th edition of PMI’s Project Management Salary Survey, which polled over 30,000 project managers from 29 different countries, the median annual salary for a Project Management Practitioner was USD 92,000.

5. EC-Council Certified Ethical Hacker (CEH): Recent cyber attacks like ransomware, other cyber security threats have made various organizations to look for certified ethical hackers to penetrate networks and computer systems so that they find and fix security vulnerabilities. CEH Certification helps you in recognizing vulnerabilities and weaknesses within an organization or business’ network. The only difference is that instead of exploiting these security gaps, you will use the knowledge to safeguard an organization or business network and patch if there are any potential exposures.

According to the, the average annual salary of a Certified Ethical Hacker is USD 89,000.

So, get geared up now for any of the above-mentioned certification areas to enhance your career prospects and boost-up your pay-grade!

Monday, 29 May 2017

Arrays in Java

Arrays in Java

An array is a data structure that defines an indexed collection of a fixed number of homogeneous data elements. All elements in the array have the same data type. A position in the array is indicated by a non-negative integer value called the index. An element at a given position in the array is accessed using the index. The size of an array is fixed and cannot increase to accommodate more elements.
  • In Java, arrays are objects. Arrays can be of primitive data types or reference types.
  • In the first case, all elements in the array are of a specific primitive data type. In the second case, all elements are references of a specific reference type. 
  • Each array object has a final field called length, which specifies the array size, that is, the number of elements the array can accommodate. The first element is always at index 0 and the last element at index n-1, where n is the value of the length field in the array.
  • Simple arrays are one-dimensional arrays.
  • An array variable declaration has either the following syntax:<element type>[] <array name>;
    <element type> <array name>[];
    where <element type> can be a primitive data type or a reference type .

The declaration does not actually create an array. It only declares a reference that can denote an array object.
  • Constructing an Array: An array can be constructed for a specific number of elements of the element type, using the new operator. The resulting array reference can be assigned to an array variable of the corresponding type.
    <array name> = new <element type> [<array size>];
  • The array declaration and construction can be combined. <element type1>[] <array name> = new <element type2>[<array size>];
  • Initializing an Array: Java provides the means of declaring, constructing, and explicitly initializing an array in one declaration statement:
    <element type>[] <array name> = { <array initialize list> };
  • Using an Array: The whole array is referenced by the array name, but individual array elements are accessed by specifying an index with the [] operator. The array element access expression has the following syntax:
    <array name> [<index expression>]
  • Anonymous Arrays:
    <element type>[] <array name> = new <element type>[] { <array initialize list> };
    can be used to declare an array for example
    int[] myArray = new int[] {1, 4, 6, 8}; 
  • Multidimensional Arrays: An array element can be an object reference and arrays are objects, array elements can themselves reference other arrays. In Java, an array of arrays can be defined as follows:
    <element type>[][]...[] <array name>;
    or <element type> <array name>[][]...[];

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

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

  • 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 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.

  • 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“

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.

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.

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.

Thursday, 11 May 2017

Introduction to Node.js

Introduction to Node.js 

Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

Node.js is an open source, cross-platform runtime environment for developing server-side and networking applications. Node.js applications are written in JavaScript, and can be run within the Node.js runtime on OS X, Microsoft Windows, and Linux.

Features of Node.js
Following are some of the important features of Node.js 

  • Asynchronous and Event Driven − All APIs of Node.js library are asynchronous, that is, non-blocking. It means a Node.js based server never waits for an API to return data. The server moves to the next API after calling it and a notification mechanism of Events of Node.js helps the server to get a response from the previous API call.
  • Fast − Being built on Google Chrome's V8 JavaScript Engine, Node.js library is very fast in code execution.
  • Single Threaded and Highly Scalable − Node.js uses a single threaded model with event looping. Event mechanism helps the server to respond in a non-blocking way and makes the server highly scalable. Node.js uses a single threaded program and the same program can provide service to a much larger number of requests than traditional servers like Apache HTTP Server.
  • No Buffering − Node.js applications never buffer any data. These applications simply output the data in chunks.
  • License − Node.js open source and is released under the MIT license

Where to Use Node.js
Node.js can be used in the following 
  • I/O bound Applications
  • Data Streaming Applications
  • Data Intensive Real-time Applications (DIRT)
  • JSON APIs based Applications
  • Single Page Applications

Related Posts Plugin for WordPress, Blogger...