Latest Post

Latest POSTS

History of Java

  • The Java platform and language began as an internal project at Sun Microsystems in December 1990, providing an alternative to the C++/C programming languages. Engineer Patrick Naughton, James Gosling and Mike Sheridan were attempting to develop a new technology for programming next generation smart appliances (like set-top boxes!), which Sun expected to be a major new opportunity. It was called the Green project.

           James Gosling -Father of Java
The team originally considered using C++, but it was rejected for several reasons as follows:
  • Because they were developing an embedded system with limited resources, they decided that C++ demanded too large a footprint and that its complexity led to developer errors.
  • C/C++ does not have garbage collection. This means that programmers have to manually manage system memory - a difficult and error-prone task.
  • C/C++ also suffered from lack of portable facilities for security, distributed programming, and threading.
  • Finally, they wanted a platform that could be easily ported to all types of devices.
Initially, Gosling attempted to modify and extend C++ but soon abandoned that in favor of creating an entirely new language, which he called Oak, after the tree that stood just outside his office.
By the September of 1992, they were able to demonstrate portions of the new platform including the Green OS, the Oak language, the libraries, and the hardware.
Java was initially developed to write software for consumer electronic products like television, ovens etc. Later with the development of Internet and World Wide Web there was a need for a programming language that is platform independent, So Java gained popularity and became one of most popular language for Internet programming.

Java meets Internet
  • In June and July 1994, John Gage, the Director of Science for Sun, Gosling, Joy, Naughton, Wayne Rosing, and Eric Schmidt (the now CEO of Google) re-targeted the platform for the World Wide Web.  With the arrival of the first graphical web browser, Mosaic, they felt the Internet was on its way to evolving into a powerful, highly interactive medium. As a prototype, Naughton wrote a small browser, WebRunner, later renamed HotJava.
  • That year, the language was renamed Java after a trademark search revealed that Oak was used by another company. The first public release of Java and the HotJava browser was on 23 May 1995. Netscape browsers started to include Java support. On 9 January 1996, the JavaSoft group was formed by Sun Microsystems in order to develop the technology.
Major Java Versions
  • JDK (Java Development Kit) 1.0 was released on (January 23, 1996), JDK 1.1 was released on February 19, 1997. Major altereations were on the AWT event model, inner classes, JavaBeans and JDBC were added to the language.
  • J2SE 1.2 (December 8, 1998) — This and subsequent releases were rebranded Java 2. The version name "J2SE" (Java 2 Platform, Standard Edition) was used instead of JDK. J2EE (Java 2 Platform, Enterprise Edition) and J2ME (Java 2 Platform, Micro Edition) were available. Major additions included reflection, a Collections framework and the integration of the Swing graphical API into the core classes. Sun's JVM was equipped with a JIT compiler for the first time.
  • J2SE 1.3 (May 8, 2000) - Notable changes included the bundling of the HotSpot JVM, Java Sound, Java Naming and Directory Interface (JNDI) and Java Platform Debugger Architecture (JPDA).
  • J2SE 1.4 (February 6, 2002) — regular expressions modeled after Perl, exception chaining, an integrated XML parser and XSLT processor (JAXP), and Java Web Start.
  • J2SE 5.0 (September 30, 2004) — Internal version numbered 1.5. A number of significant new language features include the for-each loop, generics, autoboxing and var-args.
  • The current version, Java SE 6 (December 11, 2006) — is bundled with a database manager, facilitates the use of scripting languages (currently JavaScript) with the JVM and has Visual Basic language support.
  • As of this version, Sun replaced the name "J2SE" with Java SE and dropped the ".0" from the version number 6.0. Lots of GUI improvements including native UI enhancements to support the look and feel of Windows Vista and improvements to the Java Platform Debugger Architecture (JPDA) & JVM Tool Interface for better debuging were new featuers.
  • Java SE 7 — Codename Dolphin is in the early planning stages.
History of JAVA - Presentation:



Java

Java is a programming language expressly designed for use in the distributed environment of the Internet. It was designed to have the "look and feel" of the C++ language, but it is simpler to use than C++ and enforces an object-oriented programming model. Java can be used to create complete applications that may run on a single computer or be distributed among servers and clients in a network. It can also be used to build a small application module or applet for use as part of a Web page. Applets make it possible for a Web page user to interact with the page.

Java - Presentation:
 

 

 

Concepts of Object Oriented Programming

The Object Oriented Programming is a  type of programming in which programmers define not only the data type of a data structure, but also the types of operations (functions) that can be applied to the data structure. In this way, the data structure becomes an object that includes both data and functions. In addition, programmers can create relationships between one object and another.

The concepts used in OOPs are
  • Objects
  • Classes
  • Data Abstraction and Data Encapsulation
  • Inheritance
  • Polymorphism
  • Dynamic Binding
  • Message Passing
Objetcs
  • Object is defined as the basic run time entity that contains data and its related methods.
  • Object may be a person, place or any item that the program has to handle.
  • The methods are operating on the data.
  • The objects may be either physical or logical.
  • When a program is executed, the objects interact by sending messages to one another.
Classes
  • A class is defined as a collection of Objects with same type of data and functions.
  • Once a class is defined we can create number of objects belonging to that class.
  • Class is a user defined data type
Data Abstraction
  • Abstraction refers to the act of representing essential features without including the back ground details.
  • Also by the feature of data abstraction it is possible to create user defined data types and thus increase the power of programming language
Data encapsulation
  • Data Encapsulation is the process of combining data and functions into a single unit called class.
  • By this method one cannot access the data directly.
  • Data is accessible only through the functions present inside the class.
  • Data Encapsulation provides data hiding.
Inheritance
  • Inheritance is a process of deriving new classes from existing classes.
  • The derived classes contain all attributes and functions of existing classes plus its own attributes and functions.
  • Existing class is called as Base class or Super class and inherited class is called as Derived class or Sub class.
  • The inheritance concept gives data reusability
Polymorphism
  • Polymorphism means the ability to take more than one forms.
  • An operation may exhibit different behavior in different instances.
  • The behavior depends on the type of data used in the operation.
Dynamic Binding
  • Binding refers to the connection between the function call and the corresponding function code to be executed.
  • Dynamic binding means code associated with the given procedure call is not known until run time.
Message Passing
  • Message passing is a process of sending request to execute a function for an object.
  • Message passing involves specifying the name of the object, name of the method and the information to be sent. 
Object Oriented Programming Concepts - Presentations:





Paradigms of Programming Languages

The Paradigms of programming Language gives the model to the programmer to write the programs.The different Paradigms of programming languages are
  1. Unstructed Programming (or) Monolithic Programming
  2. Procedural Programming
  3. Structural Programming
  4. Object Oriented Programming

 Monolithic Programming:
  • In this whole problem is solved as a single block.
  • All the data are global and there is no security.
  • To share the codes jumps are allowed and so contain lot of go to statements.
  • This is suitable only for small problem.
  • Difficult to follow and correct errors
                         Eg, Assembly Language, BASIC.

Procedural Programming:
  • The given problem is divided in to a number of sub problems depending upon its functionality.
  • The sub problems are called procedures or Methods.
  • Any procedure can be called at any point during the program execution.
  • The program has global and local variables.
  • Global variables can be only be used 




Features of procedure oriented Programming:
  1. Large Programs are divided in to small function or Procedure.
  2. Uses Top-Down programming Approach.
  3. Data moves freely from one function to another.
  4. Most of the functions share common data.
  5. Emphasis is given for algorithms.
Disadvantages:
  1. Very difficult identify which data is used by which function.
  2. Error Correction is difficult.
Structural Programming:
  • The program is divided into modules and the modules are then divided into functions.
  • The usage of goto statement is removed or reduced.
  • Each module can work independent of one another.
               Example: ADA, C++.




Object Oriented Programming:
  • The Program is divided into number of small units called Object. The data and function are build around these objects.
  • The data of the objects can be accessed only by the functions associated with that object.
  • The functions of one object can access the functions of other object.


Features:
  1. Emphasis is given on data rather than procedures.
  2. Problems are divided into objects.
  3. Data structures are designed such that they organize the object.
  4. Data and function are tied together.
  5. Data hiding is possible.
  6. New data and functions can be easily loaded.
  7. Object can communicate with each other using functions.
  8. Bottom-up programming approach is used
Difference between Structured and Object Oriented Programming
 
Structured Programming Object-oriented Programming
Top-down approach is followed. Bottom-up approach is followed.
Focus is on algorithm and control flow. Focus is on object model.
Program is divided into a number of sub modules or functions or procedures. Program is organized by having a number of classes and objects.
Functions are independent of each other. Each class is related in a hierarchical manner.
No designated receiver in the function call. There is a designated receiver for each message passing.
Views data and functions as two separate entities. Views data and functions as a single entity.
Maintenance is costly. Maintenance is relatively cheaper.
Software reuse is not possible. Helps in software reuse.
Function call is used. Message passing is used.
Function abstraction is used. Data abstaction is used.
Algorithm is given importance. Data is given importance.
Solution is solution-domain specific. Solution is problem-domain specific.
No encapsulation. Data and functions are separate. Encapsulation packages code and data altogether. Data and functionalities are put together in a single entity.
Relationship between programmer and program is emphasized. Relationship between programmer and user is emphasized.
Data-driven technique is used. Driven by delegation of responsibilities.

Programming Paradigms - Presentation:




Introduction to OOPs

OOP is a type of programming in which programmers define not only the data type of a data structure, but also the types of operations (functions) that can be applied to the data structure. In this way, the data structure becomes an object that includes both data and functions. In addition, programmers can create relationships between one object and another. For example, objects can inherit characteristics from other objects.



One of the principal advantages of object-oriented programming techniques over procedural programming techniques is that they enable programmers to create modules that do not need to be changed when a new type of object is added. A programmer can simply create a new object that inherits many of its features from existing objects. This makes object-oriented programs easier to modify.


To perform object-oriented programming, one needs an object-oriented programming language (OOPL). Java, C++ and Smalltalk are three of the more popular languages, and there are also object-oriented versions of Pascal.

Oop Introduction - Presentation:
 

Software Configuration Management

Changes are inevitable when software is built. A primary goal of software engineering is to improve the ease with which changes can be made to software. Configuration management is all about change control.
              Every software engineer has to be concerned with how changes made to work products are tracked and propagated throughout a project.
                          To ensure that quality is maintained the change process must be audited. A Software Configuration Management (SCM) Plan defines the strategy to be used for change management.

Software Requirements Specification

A Software requirements specification (SRS), a requirements specification for a software system, is a complete description of the behavior of a system to be developed and may include a set of use cases that describe interactions the users will have with the software. In addition it also contains non-functional requirements. Non-functional requirements impose constraints on the design or implementation such as performance engineering requirements, quality standards, or design constraints. 
                       The software requirements specification document enlists all necessary requirements that are required for the project development. To derive the requirements we need to have clear and thorough understanding of the products to be developed. This is prepared after detailed communications with the project team and customer.

Functional specification

In systems engineering a functional specification is a document that clearly and accurately describes the essential technical requirements for items, materials, or services including the procedures by which it can be determined that the requirements have been met. 

         Specifications help avoid duplication and inconsistencies, allow for accurate estimates of necessary work and resources, act as a negotiation and reference document for engineering changes, provide documentation of configuration, and allow for consistent communication among those responsible for the eight primary functions of Systems Engineering. 
                      They provide a precise idea of the problem to be solved so that they can efficiently design the system and estimate the cost of design alternatives. They provide guidance to testers for verification of each technical requirement.

Purpose  :
            There are many purposes for functional specifications. One of the primary purposes on team projects is to achieve some form of team consensus on what the program is to achieve before making the more time-consuming effort of writing source code and test cases, followed by a period of debugging. Typically, such consensus is reached after one or more reviews by the stakeholders on the project at hand after having negotiated a cost-effective way to achieve the requirements the software needs to fulfill. 

Process :
      In the ordered industrial software engineering life-cycle (waterfall model), functional specification describes what has to be implemented. The next, Systems architecture document describes how the functions will be realized using a chosen software environment. In non industrial, prototypical systems development, functional specifications are typically written after or as part of requirements analysis. When the team agrees that functional specification consensus is reached, the functional spec is typically declared "complete" or "signed off". After this, typically the software development and testing team write source code and test cases using the functional specification as the reference. While testing is performed, the behavior of the program is compared against the expected behavior as defined in the functional specification. 

Methods :
        One popular method of writing a functional specification document involves drawing or rendering either simple wire-frames or accurate, graphically designed UI screenshots. After this has been completed, and the screen examples are approved by all stakeholders, graphical elements can be numbered and written instructions can be added for each number on the screen example. For example, a login screen can have the username field labeled '1' and password field labeled '2,' and then each number can be declared in writing, for use by software engineers and later for beta testing purposes to ensure that functionality is as intended. The benefit of this method is that countless additional details can be attached to the screen examples.