Search This Blog

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.


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


Wednesday, 10 May 2017

3 COMPTIA CERTIFICATION IN DEMAND

3 COMPTIA CERTIFICATION IN DEMAND



In 2016, more than 5.2 million IT jobs contributed to the U.S. economy with an additional 2 million new job postings throughout the year. Peruse those posts, and you’ll find three CompTIA certifications specifically cited as job requirements in thousands of listings: CompTIA Security+CompTIA A+ and CompTIA Network+.
CompTIA Security+
 CompTIA Security+ is the certification globally trusted to validate foundational, vendor-neutral IT security knowledge and skills. As a benchmark for best practices in IT security, this certification covers the essential principles for network security and risk management – making it an important stepping stone of an IT security career.
In response to CompTIA’s IT Career Insights Survey, 93 percent of IT professionals said they regularly work with security and cyber security technology. Even more importantly, according to CompTIA’s Common IT Employability Skills study, 62 percent of hiring managers in the United States indicated that candidates “must have” these skills to be considered for the job. Hands-on and strategic involvement with security technology makes CompTIA Security+ certification, as well as the forthcoming CompTIA Cybersecurity Analyst (CSA+) certification, a vital part of an IT career, whether you want to enhance your skills for an existing job or apply for a new one.
CompTIA A+
It’s a known fact that IT training helps employees advance in their careers. The CompTIA A+ certification is perfect for individuals new to the field and IT professionals in transition. Because it tests a candidate’s knowledge on all fields of information technology and not on one particular domain, the CompTIA A+ certification is typically given more weight than other vendor certifications.
More than 23,500 job postings in 2016 required applicants to have CompTIA A+ certification. Validating the IT skills required by the most common hardware, software and operating systems while remaining vendor neutral, CompTIA A+ has long been a  foundational certification for IT professionals.
CompTIA Network+
Finally, more than 18,000 jobs posted in 2016 required CompTIA Network+ certification, a vendor-neutral, worldwide networking accreditation that validates an IT professional’s ability to design, configure, manage and troubleshoot both wired and wireless networks. Considering 92 percent of IT professionals in the United States worked with this technology in 2016, CompTIA Network+ is a valuable certification for almost any job applicant.
Although most online job postings do not specifically list IT certification requirements, employers know IT pros with CompTIA certifications are more capable of succeeding in their careers.
When accreditations are preferred, CompTIA Security+ is the fourth-most-requested certification in job postings, behind Certified Information Systems Security Professional, Project Management Professional, and Cisco IT certifications. CompTIA A+ and Network+ ranked 8th and 11th, respectively, according to the Burning Glass Technologies Labor Insights study.


Clearly, CompTIA professional certifications set job candidates apart in a competitive and constantly growing job market—one the U.S. Bureau of Labor Statistics expects to grow 12 percent in the network and computer systems industry over the next seven years.

Thursday, 4 May 2017

Domain Model in Hibernate

Domain Model in Hibernate

The application domain model is the central character in an ORM. Domain Model are the classes we would be mapping in our application. These domain model classes needs to follow the Plain Old Java Object (POJO) / JavaBean programming model in order to make Hibernate works best.
Applications using Hibernate uses its proprietary XML mapping file format for this purpose. With JPA, most of this information is now defined in a way that is portable across ORM/JPA providers using annotations and/or standardized XML format.

Mapping types
Hibernate understands both the Java and JDBC representations of application data. The ability to read/write this data from/to the database is the function of a Hibernate type. A type, is an implementation of the org.hibernate.type.Type interface.
To help understand the type categorizations, we take an example of a simple table and domain model that we wish to map.

create table ContactInfo (
    id integer not null,
    firstName varchar(255),
    lastName varchar(255),
    middleName varchar(255),
    notes varchar(255),
    starred boolean not null,
    website varchar(255),
    primary key (id)
)


@Entity(name = "ContactInfo")
public static class ContactInfo {

    @Id
    private Integer id;
    private Name name;
    private String notes;
    private URL website;
    private boolean starred;

    //Getters and setters
}



@Embeddable
public class Name {

    private String firstName;
    private String middleName;
    private String lastName;

    // getters and setters
}


In the broadest sense, Hibernate categorizes types into two groups:
  • Value types
  • Entity types


Value types
A value type is a piece of data that does not define its own lifecycle. It is, owned by an entity, which defines its lifecycle. All the state of an entity is made up entirely of value types. These state fields or JavaBean properties are termed persistent attributes. The persistent attributes of the ContactInfo class are value types.

Value types are further classified into three sub-categories:

Basic types
In mapping the ContactInfo table, all attributes except for name would be basic types.

Embeddable types
The name attribute is an example of an embeddable type.

Collection types
Collection types are also a distinct category among value types.

Entity types
Entities, exist independently of other objects whereas values do not. Entities are domain model classes which correlate to rows in a database table, using a unique identifier. Entities exist independently and define their own lifecycle. The ContactInfo class is an example of an entity.