Showing posts with label Frameworks. Show all posts
Showing posts with label Frameworks. Show all posts

Thursday, February 7, 2013

Usage of IDEs (Integrated Development Environments)

IDEs (Integrated Development Environments) have number of different applications and components integrated with in to provide facilities to the developers. 

Text/Code editor: 
This is a specifically designed program for editing source codes in a program by developers. It can improve the speed of code input to a program by providing functionalities such as syntax highlighting, autocomplete and bracket matching. Editors will also provide a convenient way for compiler, interpreter, debugger or any other relevant component to software development process to run the source code. If any editor doesn’t enhance and ease the process of editing source code they are not source code editors there for the code editors are specifically designed for the improve the quality of editing source code. Other than Code editors text editors also can be used to edit source code but it doesn’t provide more functionalities than source code editors. 

Most of the code editors have the functionality of immediately warning the syntax error in a program to the developers, removing unnecessary white spaces in a program and arranging the code in pleasant manner. 

Microsoft Visual Studio built-in editor (Windows), NEdit (Linux, UNIX, Mac OS X), Notepad++ (Windows) 

Compiler integration: 
Every IDE must have a compiler integrated with in it. The duty of a compiler is to inspect program flow and debug executable logic with the integrated debugger. In .NET the JIT compiler converts the IL code to machine code as in JAVA JIT compiler converts the byte code into native machine code. 

Debugger integration: 
Debugger is a special program used to find errors (bugs) in other programs. A debugger allows a programmer to stop a program at any point and examine and change the values of variables. Typically, debuggers also offer more sophisticated functions such as running a program step by step at some event or specified instruction by means of a breakpoint, and tracking the values of some variables. Some debuggers have the ability to modify the state of the program while it is running, rather than merely to observe it. It may also be possible to continue execution at a different location in the program to bypass a crash or logical error. 

Code completion/snippets: 
It’s a common name for set of features that are provided by an IDE to improve the performance of coding. 

GUI editor: 
These kinds of editors simplify the process of designing user interfaces. Event-driven architecture is commonly used in user interface designing, so GUI builders also simplify creating event-driven code. 

Microsoft Visual Studio, NetBeans, Qt Creator, Gambas are some IDEs with GUI editors 

Test suite integration: 
Commonly known as validation suit, is a collection of test cases that are intended to be test a software program to show specified behavior of a particular program. A test suite often contains detailed instructions or goals for each collection of test cases and information on the system configuration to be used during testing 

Source control integration: 
Source control is the process of managing changes to the documents, programs and other information relevant to software systems. IDEs provide more comprehensive features for the Source controlling process. 

Other than the above mentioned advantages there are some other advantages as well that can obtain by IDEs integrated with software frameworks such as: 

· Allowing programmers to organize their project files in a convenient manner – it’s an important factor to organize the project files other than messing up with the stuff. IDEs provide different structures to arrange and view them. 

· Color codes the code's syntax for easier reading/understanding – Human readable codes are always and advantage on behalf of the developers since human is more likely to interact with readable stuff. 

· Highlights coding errors – It’s a convenient option for the developers, so that they can find out the program errors easily Easily compile the project files or the entire project with little knowledge of all that compiler's flags that may be necessary.

Role of SPRING in Enterprise Application Development

Spring makes the Enterprise Application Development simple and productive as possible. Examples of this philosophy can be seen in Spring's approach to JDBC, ORM, JMX, dependency injection, and many other important areas of enterprise application development. Spring also distinguishes between making something simple, and making it simplistic. The elusive combination is to provide simplicity and power. One source of complexity in enterprise applications arises from the implementation of features and requirements that impact multiple parts of the application. Code relating to these features ends up scattered across the application code, making it harder to add, maintain, and understand. Spring 2.0 makes it much simpler to implement such features in a modular manner, greatly simplifying the overall application code and in some cases making it tractable to implement requirements that otherwise would just be too painful to code. 

A typical enterprise application - say a web app - is structured in a number of layers. A web layer with views and controllers, a service layer presenting the business interface of the system, a data-access or repository layer responsible for storing and retrieving persistent domain objects, and working alongside all of these, a domain model in which the core business logic resides.

Services Provided by SPRING Framework

Spring AOP: 
Spring does not need Aspect Oriented Programming (AOP) to function as a framework. AOP enhances the Spring middleware support by providing declarative services. The declarative services can be used as replacements for the EJB declarative services used in CMTs. The EJB "declarative services" are provided by Spring using the "declarative transaction management service." Transaction management services are based on the spring transaction management, which will be discussed next. 

Transaction Management: 
Spring provides a simple programmatic transaction management API. Spring provides support for both declarative transaction management and programmatic transaction management. Declarative transaction management is used in EJB container managed transactions (CMT) and programmatic transaction management is used in EJB bean managed persistence. Additionally Spring can use transaction management to avoid the use of EJBs where not required. 

Data Access using JDBC: 
The org.springframework.jdbc package provides all the JDBC related support required by the application. One of the interesting interfaces within this package is the SQLExceptionTranslator. The translator can help in providing translations from the very common and generic SQLException in to something more specific and informative. SQLExceptions are too generic and cannot provide any great information that can be passed back to the user. Spring’s wrapper (SQLExceptionTranslator) can implemented specific to a vendor and can provide informative error messages, which can be sent back to the user 

O/R Mapping 
Spring provides integration with OR mapping tools like Hibernate, JDO and iBATIS. (For information on Hibernate see resources below). Spring provides very good support for Hibernate. Spring augments the power of Hibernate by providing support for Hibernate sessions, Hibernate transaction management and other features in Hibernate.

Role of JEE in Enterprise Application Development

The JEE platform represents a single standard for implementing and deploying enterprise applications. During its first two years, the JEE standard's success has transformed the marketplace for distributed computing products. This success is largely due to the fact that the JEE platform has been designed through an open process, engaging a range of enterprise computing vendors to ensure that it meets the widest possible range of enterprise application requirements. As a result, the JEE platform addresses the core issues that impede organizations' efforts to maintain a competitive pace in the information economy. Organizations have recognized this and quickly adopted the new platform standard. The JEE platform is designed to provide server-side and client-side support for developing distributed, multitier applications. Such applications are typically configured as a client tier to provide the user interface, one or more middle-tier modules that provide client services and business logic for an application, and back-end enterprise information systems providing data management.

Services provided by JEE framework

Interoperability: 
Interoperability occurs concentrating on the exchange of data between two technologies. The main focus is on ensuring that both platforms agree on data types, particularly with complex data types. JEE Interoperability is a set of API and specifications in the Java JEE platform that lets developers build interoperable components that work with CORBA components and even COM objects. 

Security: 
Authentication and Authorization concepts are concerned with providing security to JEE applications. Authentication and authorization support can be provided by the following: 
  • Web container-managed (JEE) security that is provided by application servers, such as WebSphere Application Server or Apache Tomcat. 
  • Application-managed (custom) security that is written in the application. 
Memory management: 
JEE uses an automatic garbage collector to manage memory in the object lifecycle. The programmer determines when objects are created, and the Java runtime is responsible for recovering the memory once objects are no longer in use. Once no references to an object remain, the unreachable memory becomes eligible to be freed automatically by the garbage collector. Something similar to a memory leak may still occur if a programmer's code holds a reference to an object that is no longer needed, typically when objects that are no longer needed are stored in containers that are still in use.

Role of .NET in Enterprise Application Development


The Microsoft enterprise application development platform is a comprehensive platform for building connected systems based on the .NET Framework. The .NET Framework provides a cohesive and comprehensive development environment, as well as a core runtime that enables effective deployment, operations and management of enterprise applications. The .NET Framework and the Microsoft enterprise application development platform, however, was not designed for a homogeneous enterprise. Microsoft based its application platform strategy on the support for industry standards and the understanding that enterprises need the ability to integrate with existing infrastructure and applications, and may desire to select elements of their platform from other vendors but have them easily integrate with .NET-based applications and packaged products from Microsoft. .NET fully enables Web services, which are fundamentally designed around pluggable services that allow interoperability with other systems. This strategy not only allows companies to create robust, scalable, and interoperable applications using current technologies, but positions users of the Microsoft enterprise application development platform to build service-oriented applications today while preserving their investments in existing platforms. 

The core elements of the Microsoft enterprise application development platform are depicted in the above diagram. 

As depicted in the diagram, the Microsoft platform is comprehensive and integrated, with a solution at every level of the technology stack designed to be programmable via the common .NET Framework and Microsoft Visual Studio® development tool, and easily integrated via a service-oriented architecture. The platform supports all client types, inclusive of smart devices such as PDAs and smart phones, smart clients taking advantage of the processing power on desktop PCs, and thin browser-based clients based on HTML.

Services Provided by .NET framework

There are number of services provided with .NET framework to improve the convenience of the developers and to make the framework more stable and secure. 

Following are some of the services that brings with .Net framework 

Interoperability: 
.NET interoperability feature provides access to functionality that is implemented in programs which is out side of the .NET environment. Access to COM components is provided in the System.Runtime.InteropServices and System.EnterpriseServices namespaces of the framework; access to other functionality is provided using the P/Invoke feature. 

.NET interoperability comes in three types 

· Interoperability of .NET code with COM components 
· Interoperability of COM components with .NET 
· Interoperability of .NET code with Win32 DLLs 

Behavior of the .NET framework object model is different from the behavior of the Component object model (COM). As an example clients of the .NET components doesn’t have to worry about the life time of an object CLR manages things for them in contrast clients of the COM object must take care of the life time of objects. 

Common Runtime Engine: 
All .NET programs execute under the supervision of the CLR, guaranteeing certain properties and behaviors in the areas of memory management, security, and exception handling. Developers may Wright code using the languages such as C# or VB.NET at runtime .NET compiler converts such code in to CIL code CLR’s JIT compiler converts CIL code in to native machine code. 

Language Independence: 
.NET framework introduces a Common Type System that defines all possible data types and programming constructs supported by the CLR and how they may or may not interact with each other conforming to the Common Language Infrastructure (CLI) specification. Because of this feature, the .NET Framework supports the exchange of types and object instances between libraries and applications written using any conforming .NET language. 

Security: 
Provides security in terms of several mechanisms 
ASP.NET Web Application Security – limit access to the sites by comparing authenticated credentials to Microsoft Windows NT file system permissions. 
Code access security - uses permissions to help limit the access that code has to protected resources and operations 
Role-based security - provides information needed to make decisions about what a user is allowed to do. 

Memory management: 
The .NET Framework CLR frees the developer from the burden of managing memory (allocating and freeing up when done); instead it does the memory management itself. To this end, the memory allocated to instantiations of .NET types (objects) is done contiguously from the managed heap, a pool of memory managed by the CLR. As long as there exists a reference to an object, which might be either a direct reference to an object or via a graph of objects, the object is considered to be in use by the CLR. 

Data Access: 
.NET framework introduced many new technologies, including a new relational data access model including ADO.NET technology. It consists of two components Data Provider and Dataset. The Data Provider defines a set of interfaces for data access and also provides and resolves data to and from a DataSet. DataSet represents relational data in-memory from any data source and provides good integration with XML and XSD. The data source can be either an RDBMS or an XML file.

An Overview of SPRING Framework

The Spring Framework is an open source application framework for the Java platform. The first official release of spring was version 1.0 released in year 2004. Current version is 2.5.6 released in January 2009. Spring provides a light weight container and framework.


Core: is the most fundamental part which provides the Dependency Injection container DAO: provides a abstraction of the JDBC layer which removes the to do tedious JDBC coding ORM: provides integration layers for popular object relational mapping APis. 

AOP: provides an AOP Alliance-compliant aspect-oriented programming implementation. 
MVC: provides a Model-View-Controller (MVC) implementation for web applications 

In spring, those objects that form the backbone of your application and that are managed by the Spring IoC container are referred to as beans. A bean is simply an object that is instantiated, assembled and otherwise managed by a Spring IoC container. 

Spring framework contains several modules that provides variety of services Inversion of Control container: Provides a convenient way for managing and configuring JAVA objects using callbacks. 

Aspect-oriented programming: enables implementation of cross-cutting routines. AOP is configured at run time. This removes the need for a compilation step or load-time weaving. 

Other than these Data access, Transaction management, Model-view-controller, Remote Access framework, Convention-over-configuration and Batch processing components are available as well. 

Spring includes classes that support remoting using various technologies. Spring has four classes that supports remoting: 

Remote Method Invocation (RMI) 

Spring's HTTP invoker 

By using Spring's HessianProxyFactoryBean and the HessianServiceExporterSpring Burlap. Burlap is Caucho's XML-based alternative to Hessian. Spring provides support classes such as BurlapProxyFactoryBean and BurlapServiceExporter.

An Overview of JEE (JAVA ENTERPRISE EDITION)

There are three platforms available for JAVA programming: 
  1. Java Platform, Standard Edition (Java SE) 
  2. Java Platform, Micro Edition (Java ME) 
  3. Java Platform, Enterprise Edition (Java EE) 
JEE: 
Java EE is widely used as a platform for server programming in JAVA programming language. JEE is differs from JME and JSE with some added functionalities available. It contains libraries which has the ability to deploy fault-tolerance, distributed, multi-tier java software. 

It provides an easy to use framework to build middleware applications; it enables the developers to focus on business logic instead of integration logic and it removes the complexity of large scale distributed applications. 

JEE applications are comprised of components, containers, and services. Components are application-level components. Web components, such as Servlets and JSPs, provide dynamic responses to requests from a Web page. EJB components contain server-side business logic for enterprise applications. Web and EJB component containers host services that support Web and EJB modules Java EE platform supports three primary application types 

1. Web applications 
2. EJB applications 
3. Enterprise applications 

Each of these application types has their own characteristics. These applications are executed in domain relevant containers that are included in JAVA. There are two major types of containers define in JEE; web containers and EJB containers, web containers are managed environments for web applications while EJB containers are managed environments for EJB applications. 

JEE provides several standard services such as Communication, e-mail, XML processing, transactions, messaging, and web services. Web container supports technologies such as servlets, filters, JSPs, JSF while EJB container supports technologies such as session beans, entity beans and message driven beans. 

Many of the APIs in JEE provides interoperability with components that are not a part of the JEE platform, such as external web or CORBA services. 

The JEE servers provide deployment, management, and execution support for conforming application components. Application components can be divided into three categories according to their dependence on a JEE server: 

1. Components that are deployed, managed, and executed on a J2EE server. 

2. Components that are deployed and managed on a J2EE server, but are loaded to and executed on a client machine. JEE provides comprehensive structure for security aspects since security is an essential requirement in every enterprise application. JEE addresses the security requirements such as Authentication, Access control for resources, Data integrity, Confidentiality or data privacy, Non-repudiation, Auditing

An Overview of .NET Framework

A framework is a set of code or libraries which provide functionality common to a whole class of applications.


.NET framework is a software framework which is developed at Microsoft which can be installed on windows based operating system. The .NET Framework includes two main components „ the Common Language Runtime and the Base Class Libraries. 

The Common Language Runtime (CLR) in the .NET Framework manages the execution of the Code and provides access to a variety of services that will make the development process easier. Code that is compiled and targeted to the CLR is known as managed code. 

.NET framework was initially released on February 13, 2002. In 2005 .NET frame work 2.0 was released and then .NET 3.0 was released in 2006. .NET 3.0 had number of major updates and latest technologies included with it. Respectively framework 3.5 and 4.0 were released on 2008 and 2010. 

.NET 3.5 introduced several latest technologies: 

AJAX: 
AJAX is a technology which has the support for responsive browser applications. Normally in web applications for each request made by the user requires a page reload, AJAX provides a more intelligent-and faster-approach for serving user requests. Rather than load a new page for each user request, the browser asynchronously requests data in advance. 

Language-Integrated Query (LINQ): 
Rather than requiring specialized languages and a separate approach for each kind of data, LINQ adds a set of extensions to C# and VB that allow common access to diverse information.  

Windows Communication Foundation: 
WCF supports communication between .NET applications. WCF has similar functionality compared to web services. WCF provides strong support for interoperable communication via SOAP, an essential part of modern computing. 

Windows Presentation Foundation (WPF): 
WPF addresses the issues with user interface aspects. It provides more convenient techniques for developers to design user interfaces including support for video, animation, two- and three-dimensional graphics, and various kinds of documents. 

.NET framework contains a JIT compiler to compile IL code into machine code. As it compiles to machine code, makes sure that the code is type safe. It does this to ensure that objects are separate, thereby making certain that objects won’t unintentionally corrupt one another. 

Assemblies contain the code that is executed by CLR. Assemblies are self describing all information about the assemblies contains with in itself. 

Garbage collector with in the .NET framework destroys the unneeded objects so that the developer does not need to monitor the code and destroy the unneeded objects.