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.