SlideShare a Scribd company logo
A brief overview of java frameworks
   Object Oriented Development Principles and their uses
   Standard(?) Design Patterns and their roles
   Patterns in Java and their uses
   Overview of Spring Framework
   Evolution of Java EE 6 – All the goodies are now in
    official package
   A brief introduction to JUnit – Test Driven Development in
    Java
   The special three –

    • Encapsulation – hiding the concrete implementations
    • Polymorphism – objects has more than one form
    • Inheritance – reusing functionalities


   And some of their derived form/application –

    • Program to an interface, not to an implementation
    • Favor object composition over inheritance


and much more, most notably, Design Patterns……………
   Single Responsibility Principle

   Open-Close Principle

   Liskov Substitution Principle

   Interface Segregation Principle

   Dependency Inversion Principle
   A defining characteristics of a framework

   It’s all about moving away the flow of controls to the
    frameworks.
   Let us consider a program that perform some simple
    command line query –


        puts 'What is your name?'
        name = gets
        process_name(name)
        puts 'What is your quest?'
        quest = gets
        process_quest(quest)
   However, in a window system, I would write something
    like this –


        require 'tk'
        root = TkRoot.new()
        name_label = TkLabel.new() {text "What is Your Name?"}
        name_label.pack
        name = TkEntry.new(root).pack
        name.bind("FocusOut") {process_name(name)}
        quest_label = TkLabel.new() {text "What is Your Quest?"}
        quest_label.pack
        quest = TkEntry.new(root).pack
        quest.bind("FocusOut") {process_quest(quest)}
        Tk.mainloop()
   The control of execution has been handed over to the
    windowing system.

   The control is Inverted, the framework calls the code
    rather than rather than the code calling the framework.

   This principle is also known as Hollywood Principle.
   Let us write a software component that provides a list of
    movies directed by a particular director –
    class MovieLister...
       public Movie[] moviesDirectedBy(String arg) {
         List allMovies = finder.findAll();
         for (Iterator it = allMovies.iterator(); it.hasNext();) {
         Movie movie = (Movie) it.next();
                    if (!movie.getDirector().equals(arg))
                               it.remove();
         }

          return (Movie[]) allMovies.toArray(new
                   Movie[allMovies.size()]);
      }
   moviesDirectedBy is dependent on the implementation of
    the finder object.

   Let’s make this method completely independent of how
    all the movies are being stored. So all the method does
    is refer to a finder, and all that finder does is know how to
    respond to the findAll method.
   It can be done easily by defining an interface –


        public interface MovieFinder {
                 List findAll();
        }
   Let’s provide a concrete implementation of MovieFinder -

    class MovieLister...
          private MovieFinder finder;
          public MovieLister() {
                  finder = new
                           ColonDelimitedMovieFinder("movies1.txt");
          }
   Now we have a new problem – how to get an instance of
    the right finder implementation into place
   The implementation class for the finder isn't linked into
    the program at compile time. Instead we want this lister
    to work with any implementation, and for that
    implementation to be plugged in at some later point.

   The problem is how that link could be made so that lister
    class is ignorant of the implementation class, but can still
    talk to an instance to do its work.
   The basic idea of the Dependency Injection is to have a
    separate object, an assembler, that populates a field in
    the lister class with an appropriate implementation for the
    finder interface.
   Type 1 IoC - Interface Injection

   Type 2 IoC - Setter Injection

   Type 3 IoC - Constructor Injection
   Define a setter method for populating finder –

         class MovieLister...
                 private MovieFinder finder;
        public void setFinder(MovieFinder finder) {
                 this.finder = finder;
                 }
   Similarly let us define a setter for the filename -

        class ColonMovieFinder...
                public void setFilename(String filename) {
                                 this.filename = filename;
                }
   The third step is to set up the configuration for the files.
    Spring supports configuration through XML files and
    also through code, but XML is the expected way to do
    it –
    <beans>
         <bean id="MovieLister" class="spring.MovieLister">
                 <property name="finder">
                         <ref local="MovieFinder"/>
                 </property>
         </bean>
         <bean id="MovieFinder" class="spring.ColonMovieFinder">
                 <property name="filename">
                         <value>movies1.txt</value>
                 </property>
         </bean>
    </beans>
   And then the test –

    public void testWithSpring() throws Exception{
          ApplicationContext ctx = new
                  FileSystemXmlApplicationContext("spring.xml");
          MovieLister lister = (MovieLister)ctx.getBean("MovieLister");
          Movie[] movies = lister.moviesDirectedBy("Sergio Leone");
          assertEquals("Once Upon a Time in the West",
                                   movies[0].getTitle());

    }
          WHERE DID THE new GO ?!
A brief overview of java frameworks
   Spring

   Google Guice – created by Google

   Pico Container

   Avalon

   Context and Dependency Injection – official Sun Java DI
    Container

   Seasar
   Assume you have a graphical class with many set...()
    methods. After each set method, the data of the graphics
    changed, thus the graphics changed and thus the
    graphics need to be updated on screen.


   Assume to repaint the graphics you must call
    Display.update().
   The classical approach is to solve this by adding more
    code. At the end of each set method you write –


        void set...(...) {
                 :
                 :
                 Display.update();
        }
   What will happen if there are 20-30 of these set methods
    ?


   Also whenever a new set-method is added, developers
    must be sure to not forget adding this to the end,
    otherwise they just created a bug.
   AOP solves this without adding tons of code, instead you
    add an aspect -

        after() : set() {
                  Display.update();
        }

         after running any method that is a set   pointcut,
    run the following code.
   And you define a point cut –


        pointcut set() : execution(* set*(*) ) &&
                                  this(MyGraphicsClass) &&
                                  within(com.company.*);

   If a method is named set* (* means any name might
follow after set), regardless of what the method returns
(first asterisk) or what parameters it takes (third asterisk)
and it is a method of MyGraphicsClass and this class is
part of the package com.company.*, then this is a set()
pointcut.
   This example also shows one of the big downsides of
    AOP. It is actually doing something that many
    programmers consider an Anti-Pattern. The exact pattern
    is called Action at a distance.


   Action at a distance is an anti-pattern (a recognized
    common error) in which behavior in one part of a
    program varies wildly based on difficult or impossible to
    identify operations in another part of the program.
   AspectJ

   Spring

   Seasar
   Object-relational mapping is a programming technique
    for converting data between incompatible type systems in
    relational databases and object-oriented programming
    languages.

   This creates, in effect, a virtual object database that can
    be used from within the programming language.

   It's good for abstracting the datastore out in order to
    provide an interface that can be used in your code.
   Without ORM, we write code like this –

           String sql = "SELECT ... FROM persons WHERE id = 10";
           DbCommand cmd = new DbCommand(connection, sql);
           Result res = cmd.Execute();
           String name = res[0]["FIRST_NAME"];

   With the help of ORM tools, we can do –

           Person p = repository.GetPerson(10);
           String name = p.FirstName;
    Or -
           Person p = Person.Get(Person.Properties.Id == 10);
   The SQL is hidden away from logic code. This has the
    benefit of allowing developers to more easily support
    more database engines.


   Developers can focus on writing the logic, instead of
    getting all the SQL right. The code will typically be more
    readable as well.
   Object-relational mapping is the Vietnam of our industry
    – Ted Neward.


   Developers are struggling for years with the huge
    mismatch between relational database models and
    traditional object models.
   Granularity – more classes than the number of
    corresponding tables.

   Subtyping

   Identity – primary key vs. object identity and object
    equality

   Associations – unidirectional in OOP vs. foreign keys.

   Data Navigation – walking the object graph vs. SQL joins
   Hibernate – the highly popular ORM tool for Java, has a
    corresponding .NET version too (NHibernate). Uses
    HQL.


   Java Persistence API – official sun java specification for
    managing persistence.
A brief overview of java frameworks
A brief overview of java frameworks
A brief overview of java frameworks
A brief overview of java frameworks
   Seam Framework – AJAX + JSF + JPA + EJB 3.0 + BPM

   Log4J – logging framework for Java

   JUnit – Test Driven Development in Java

   Maven – actually not a framework, more of a build
    system, but still………
   Wikipedia

   Personal Website of Martin Fowler

   Stackoverflow

   Official Spring Documentation

   Coding Horror

   Official Java EE 6 Tutorial
Questions?
Ad

More Related Content

What's hot (19)

Asp.net MVC training session
Asp.net MVC training sessionAsp.net MVC training session
Asp.net MVC training session
Hrichi Mohamed
 
Jsf presentation
Jsf presentationJsf presentation
Jsf presentation
Ashish Gupta
 
Impactos no Design utilizando programação funcional Light Talk
Impactos no Design utilizando programação funcional Light TalkImpactos no Design utilizando programação funcional Light Talk
Impactos no Design utilizando programação funcional Light Talk
Luiz Costa
 
Spring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trendsSpring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trends
Arawn Park
 
Java server faces
Java server facesJava server faces
Java server faces
Fábio Santos
 
JavaEE6 my way
JavaEE6 my wayJavaEE6 my way
JavaEE6 my way
Nicola Pedot
 
MVC for Desktop Application - Part 3
MVC for Desktop Application - Part 3MVC for Desktop Application - Part 3
MVC for Desktop Application - Part 3
晟 沈
 
Jsf 2.0 Overview
Jsf 2.0 OverviewJsf 2.0 Overview
Jsf 2.0 Overview
hereisbharat
 
ASP .net MVC
ASP .net MVCASP .net MVC
ASP .net MVC
Divya Sharma
 
Grails 2.0 vs asp.net mvc 4
Grails 2.0 vs asp.net mvc 4Grails 2.0 vs asp.net mvc 4
Grails 2.0 vs asp.net mvc 4
Umar Ali
 
MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1
晟 沈
 
بررسی چارچوب جنگو
بررسی چارچوب جنگوبررسی چارچوب جنگو
بررسی چارچوب جنگو
railsbootcamp
 
ASP.NET MVC 3
ASP.NET MVC 3ASP.NET MVC 3
ASP.NET MVC 3
Buu Nguyen
 
Asp.Net MVC3 - Basics
Asp.Net MVC3 - BasicsAsp.Net MVC3 - Basics
Asp.Net MVC3 - Basics
Saravanan Subburayal
 
MV(C, mvvm) in iOS and ReactiveCocoa
MV(C, mvvm) in iOS and ReactiveCocoaMV(C, mvvm) in iOS and ReactiveCocoa
MV(C, mvvm) in iOS and ReactiveCocoa
Yi-Shou Chen
 
Building Large Scale Javascript Application
Building Large Scale Javascript ApplicationBuilding Large Scale Javascript Application
Building Large Scale Javascript Application
Anis Ahmad
 
A Taste of Java ME
A Taste of Java MEA Taste of Java ME
A Taste of Java ME
wiradikusuma
 
MVVM Lights
MVVM LightsMVVM Lights
MVVM Lights
Denis Voituron
 
Spring and DWR
Spring and DWRSpring and DWR
Spring and DWR
wiradikusuma
 
Asp.net MVC training session
Asp.net MVC training sessionAsp.net MVC training session
Asp.net MVC training session
Hrichi Mohamed
 
Impactos no Design utilizando programação funcional Light Talk
Impactos no Design utilizando programação funcional Light TalkImpactos no Design utilizando programação funcional Light Talk
Impactos no Design utilizando programação funcional Light Talk
Luiz Costa
 
Spring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trendsSpring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trends
Arawn Park
 
MVC for Desktop Application - Part 3
MVC for Desktop Application - Part 3MVC for Desktop Application - Part 3
MVC for Desktop Application - Part 3
晟 沈
 
Grails 2.0 vs asp.net mvc 4
Grails 2.0 vs asp.net mvc 4Grails 2.0 vs asp.net mvc 4
Grails 2.0 vs asp.net mvc 4
Umar Ali
 
MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1
晟 沈
 
بررسی چارچوب جنگو
بررسی چارچوب جنگوبررسی چارچوب جنگو
بررسی چارچوب جنگو
railsbootcamp
 
MV(C, mvvm) in iOS and ReactiveCocoa
MV(C, mvvm) in iOS and ReactiveCocoaMV(C, mvvm) in iOS and ReactiveCocoa
MV(C, mvvm) in iOS and ReactiveCocoa
Yi-Shou Chen
 
Building Large Scale Javascript Application
Building Large Scale Javascript ApplicationBuilding Large Scale Javascript Application
Building Large Scale Javascript Application
Anis Ahmad
 
A Taste of Java ME
A Taste of Java MEA Taste of Java ME
A Taste of Java ME
wiradikusuma
 

Similar to A brief overview of java frameworks (20)

React native
React nativeReact native
React native
Mohammed El Rafie Tarabay
 
Design patterns
Design patternsDesign patterns
Design patterns
Anas Alpure
 
Whoops! Where did my architecture go?
Whoops! Where did my architecture go?Whoops! Where did my architecture go?
Whoops! Where did my architecture go?
Oliver Gierke
 
Java EE 6 CDI Integrates with Spring & JSF
Java EE 6 CDI Integrates with Spring & JSFJava EE 6 CDI Integrates with Spring & JSF
Java EE 6 CDI Integrates with Spring & JSF
Jiayun Zhou
 
L09 Frameworks
L09 FrameworksL09 Frameworks
L09 Frameworks
Ólafur Andri Ragnarsson
 
JavaScript Miller Columns
JavaScript Miller ColumnsJavaScript Miller Columns
JavaScript Miller Columns
Jonathan Fine
 
Nt1310 Unit 3 Language Analysis
Nt1310 Unit 3 Language AnalysisNt1310 Unit 3 Language Analysis
Nt1310 Unit 3 Language Analysis
Nicole Gomez
 
Design Pattern Mastery - Momentum Dev Con 19 Apr 2018
Design Pattern Mastery - Momentum Dev Con 19 Apr 2018Design Pattern Mastery - Momentum Dev Con 19 Apr 2018
Design Pattern Mastery - Momentum Dev Con 19 Apr 2018
Steven Smith
 
Evolution of Patterns
Evolution of PatternsEvolution of Patterns
Evolution of Patterns
Chris Eargle
 
Whoops! where did my architecture go?
Whoops! where did my architecture go?Whoops! where did my architecture go?
Whoops! where did my architecture go?
Oliver Gierke
 
Group111
Group111Group111
Group111
Shahriar Robbani
 
Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015
Svetlin Nakov
 
Oop features java presentationshow
Oop features java presentationshowOop features java presentationshow
Oop features java presentationshow
ilias ahmed
 
Java design patterns
Java design patternsJava design patterns
Java design patterns
Shawn Brito
 
Desing pattern prototype-Factory Method, Prototype and Builder
Desing pattern prototype-Factory Method, Prototype and Builder Desing pattern prototype-Factory Method, Prototype and Builder
Desing pattern prototype-Factory Method, Prototype and Builder
paramisoft
 
Javascript internals
Javascript internalsJavascript internals
Javascript internals
Nir Noy
 
Adding a modern twist to legacy web applications
Adding a modern twist to legacy web applicationsAdding a modern twist to legacy web applications
Adding a modern twist to legacy web applications
Jeff Durta
 
Xopus Application Framework
Xopus Application FrameworkXopus Application Framework
Xopus Application Framework
Jady Yang
 
Fabric - a server management tool from Instagram
Fabric - a server management tool from InstagramFabric - a server management tool from Instagram
Fabric - a server management tool from Instagram
Jay Ren
 
Advanced java jee material by KV Rao sir
Advanced java jee material by KV Rao sirAdvanced java jee material by KV Rao sir
Advanced java jee material by KV Rao sir
AVINASH KUMAR
 
Whoops! Where did my architecture go?
Whoops! Where did my architecture go?Whoops! Where did my architecture go?
Whoops! Where did my architecture go?
Oliver Gierke
 
Java EE 6 CDI Integrates with Spring & JSF
Java EE 6 CDI Integrates with Spring & JSFJava EE 6 CDI Integrates with Spring & JSF
Java EE 6 CDI Integrates with Spring & JSF
Jiayun Zhou
 
JavaScript Miller Columns
JavaScript Miller ColumnsJavaScript Miller Columns
JavaScript Miller Columns
Jonathan Fine
 
Nt1310 Unit 3 Language Analysis
Nt1310 Unit 3 Language AnalysisNt1310 Unit 3 Language Analysis
Nt1310 Unit 3 Language Analysis
Nicole Gomez
 
Design Pattern Mastery - Momentum Dev Con 19 Apr 2018
Design Pattern Mastery - Momentum Dev Con 19 Apr 2018Design Pattern Mastery - Momentum Dev Con 19 Apr 2018
Design Pattern Mastery - Momentum Dev Con 19 Apr 2018
Steven Smith
 
Evolution of Patterns
Evolution of PatternsEvolution of Patterns
Evolution of Patterns
Chris Eargle
 
Whoops! where did my architecture go?
Whoops! where did my architecture go?Whoops! where did my architecture go?
Whoops! where did my architecture go?
Oliver Gierke
 
Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015
Svetlin Nakov
 
Oop features java presentationshow
Oop features java presentationshowOop features java presentationshow
Oop features java presentationshow
ilias ahmed
 
Java design patterns
Java design patternsJava design patterns
Java design patterns
Shawn Brito
 
Desing pattern prototype-Factory Method, Prototype and Builder
Desing pattern prototype-Factory Method, Prototype and Builder Desing pattern prototype-Factory Method, Prototype and Builder
Desing pattern prototype-Factory Method, Prototype and Builder
paramisoft
 
Javascript internals
Javascript internalsJavascript internals
Javascript internals
Nir Noy
 
Adding a modern twist to legacy web applications
Adding a modern twist to legacy web applicationsAdding a modern twist to legacy web applications
Adding a modern twist to legacy web applications
Jeff Durta
 
Xopus Application Framework
Xopus Application FrameworkXopus Application Framework
Xopus Application Framework
Jady Yang
 
Fabric - a server management tool from Instagram
Fabric - a server management tool from InstagramFabric - a server management tool from Instagram
Fabric - a server management tool from Instagram
Jay Ren
 
Advanced java jee material by KV Rao sir
Advanced java jee material by KV Rao sirAdvanced java jee material by KV Rao sir
Advanced java jee material by KV Rao sir
AVINASH KUMAR
 
Ad

More from MD Sayem Ahmed (6)

Distributed systems - A Primer
Distributed systems - A PrimerDistributed systems - A Primer
Distributed systems - A Primer
MD Sayem Ahmed
 
Factory Method Pattern
Factory Method PatternFactory Method Pattern
Factory Method Pattern
MD Sayem Ahmed
 
An Introduction to Maven Part 1
An Introduction to Maven Part 1An Introduction to Maven Part 1
An Introduction to Maven Part 1
MD Sayem Ahmed
 
Restful web services
Restful web servicesRestful web services
Restful web services
MD Sayem Ahmed
 
An introduction to javascript
An introduction to javascriptAn introduction to javascript
An introduction to javascript
MD Sayem Ahmed
 
01. design pattern
01. design pattern01. design pattern
01. design pattern
MD Sayem Ahmed
 
Distributed systems - A Primer
Distributed systems - A PrimerDistributed systems - A Primer
Distributed systems - A Primer
MD Sayem Ahmed
 
Factory Method Pattern
Factory Method PatternFactory Method Pattern
Factory Method Pattern
MD Sayem Ahmed
 
An Introduction to Maven Part 1
An Introduction to Maven Part 1An Introduction to Maven Part 1
An Introduction to Maven Part 1
MD Sayem Ahmed
 
An introduction to javascript
An introduction to javascriptAn introduction to javascript
An introduction to javascript
MD Sayem Ahmed
 
Ad

Recently uploaded (20)

LDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini UpdatesLDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini Updates
LDM Mia eStudios
 
Ultimate VMware 2V0-11.25 Exam Dumps for Exam Success
Ultimate VMware 2V0-11.25 Exam Dumps for Exam SuccessUltimate VMware 2V0-11.25 Exam Dumps for Exam Success
Ultimate VMware 2V0-11.25 Exam Dumps for Exam Success
Mark Soia
 
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 AccountingHow to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
Celine George
 
Stein, Hunt, Green letter to Congress April 2025
Stein, Hunt, Green letter to Congress April 2025Stein, Hunt, Green letter to Congress April 2025
Stein, Hunt, Green letter to Congress April 2025
Mebane Rash
 
How to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 WebsiteHow to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 Website
Celine George
 
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Library Association of Ireland
 
How to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of saleHow to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of sale
Celine George
 
Unit 4: Long term- Capital budgeting and its types
Unit 4: Long term- Capital budgeting and its typesUnit 4: Long term- Capital budgeting and its types
Unit 4: Long term- Capital budgeting and its types
bharath321164
 
Presentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem KayaPresentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem Kaya
MIPLM
 
Vitamins Chapter-7, Biochemistry and clinical pathology, D.Pharm 2nd year
Vitamins Chapter-7, Biochemistry and clinical pathology, D.Pharm 2nd yearVitamins Chapter-7, Biochemistry and clinical pathology, D.Pharm 2nd year
Vitamins Chapter-7, Biochemistry and clinical pathology, D.Pharm 2nd year
ARUN KUMAR
 
High Performance Liquid Chromatography .pptx
High Performance Liquid Chromatography .pptxHigh Performance Liquid Chromatography .pptx
High Performance Liquid Chromatography .pptx
Ayush Srivastava
 
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
Celine George
 
YSPH VMOC Special Report - Measles Outbreak Southwest US 4-30-2025.pptx
YSPH VMOC Special Report - Measles Outbreak  Southwest US 4-30-2025.pptxYSPH VMOC Special Report - Measles Outbreak  Southwest US 4-30-2025.pptx
YSPH VMOC Special Report - Measles Outbreak Southwest US 4-30-2025.pptx
Yale School of Public Health - The Virtual Medical Operations Center (VMOC)
 
Geography Sem II Unit 1C Correlation of Geography with other school subjects
Geography Sem II Unit 1C Correlation of Geography with other school subjectsGeography Sem II Unit 1C Correlation of Geography with other school subjects
Geography Sem II Unit 1C Correlation of Geography with other school subjects
ProfDrShaikhImran
 
Understanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s GuideUnderstanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s Guide
GS Virdi
 
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - WorksheetCBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
Sritoma Majumder
 
Operations Management (Dr. Abdulfatah Salem).pdf
Operations Management (Dr. Abdulfatah Salem).pdfOperations Management (Dr. Abdulfatah Salem).pdf
Operations Management (Dr. Abdulfatah Salem).pdf
Arab Academy for Science, Technology and Maritime Transport
 
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Library Association of Ireland
 
To study Digestive system of insect.pptx
To study Digestive system of insect.pptxTo study Digestive system of insect.pptx
To study Digestive system of insect.pptx
Arshad Shaikh
 
One Hot encoding a revolution in Machine learning
One Hot encoding a revolution in Machine learningOne Hot encoding a revolution in Machine learning
One Hot encoding a revolution in Machine learning
momer9505
 
LDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini UpdatesLDMMIA Reiki Master Spring 2025 Mini Updates
LDMMIA Reiki Master Spring 2025 Mini Updates
LDM Mia eStudios
 
Ultimate VMware 2V0-11.25 Exam Dumps for Exam Success
Ultimate VMware 2V0-11.25 Exam Dumps for Exam SuccessUltimate VMware 2V0-11.25 Exam Dumps for Exam Success
Ultimate VMware 2V0-11.25 Exam Dumps for Exam Success
Mark Soia
 
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 AccountingHow to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
How to Customize Your Financial Reports & Tax Reports With Odoo 17 Accounting
Celine George
 
Stein, Hunt, Green letter to Congress April 2025
Stein, Hunt, Green letter to Congress April 2025Stein, Hunt, Green letter to Congress April 2025
Stein, Hunt, Green letter to Congress April 2025
Mebane Rash
 
How to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 WebsiteHow to Subscribe Newsletter From Odoo 18 Website
How to Subscribe Newsletter From Odoo 18 Website
Celine George
 
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Phoenix – A Collaborative Renewal of Children’s and Young People’s Services C...
Library Association of Ireland
 
How to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of saleHow to manage Multiple Warehouses for multiple floors in odoo point of sale
How to manage Multiple Warehouses for multiple floors in odoo point of sale
Celine George
 
Unit 4: Long term- Capital budgeting and its types
Unit 4: Long term- Capital budgeting and its typesUnit 4: Long term- Capital budgeting and its types
Unit 4: Long term- Capital budgeting and its types
bharath321164
 
Presentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem KayaPresentation of the MIPLM subject matter expert Erdem Kaya
Presentation of the MIPLM subject matter expert Erdem Kaya
MIPLM
 
Vitamins Chapter-7, Biochemistry and clinical pathology, D.Pharm 2nd year
Vitamins Chapter-7, Biochemistry and clinical pathology, D.Pharm 2nd yearVitamins Chapter-7, Biochemistry and clinical pathology, D.Pharm 2nd year
Vitamins Chapter-7, Biochemistry and clinical pathology, D.Pharm 2nd year
ARUN KUMAR
 
High Performance Liquid Chromatography .pptx
High Performance Liquid Chromatography .pptxHigh Performance Liquid Chromatography .pptx
High Performance Liquid Chromatography .pptx
Ayush Srivastava
 
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...
Celine George
 
Geography Sem II Unit 1C Correlation of Geography with other school subjects
Geography Sem II Unit 1C Correlation of Geography with other school subjectsGeography Sem II Unit 1C Correlation of Geography with other school subjects
Geography Sem II Unit 1C Correlation of Geography with other school subjects
ProfDrShaikhImran
 
Understanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s GuideUnderstanding P–N Junction Semiconductors: A Beginner’s Guide
Understanding P–N Junction Semiconductors: A Beginner’s Guide
GS Virdi
 
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - WorksheetCBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - Worksheet
Sritoma Majumder
 
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Michelle Rumley & Mairéad Mooney, Boole Library, University College Cork. Tra...
Library Association of Ireland
 
To study Digestive system of insect.pptx
To study Digestive system of insect.pptxTo study Digestive system of insect.pptx
To study Digestive system of insect.pptx
Arshad Shaikh
 
One Hot encoding a revolution in Machine learning
One Hot encoding a revolution in Machine learningOne Hot encoding a revolution in Machine learning
One Hot encoding a revolution in Machine learning
momer9505
 

A brief overview of java frameworks

  • 2. Object Oriented Development Principles and their uses  Standard(?) Design Patterns and their roles  Patterns in Java and their uses  Overview of Spring Framework  Evolution of Java EE 6 – All the goodies are now in official package  A brief introduction to JUnit – Test Driven Development in Java
  • 3. The special three – • Encapsulation – hiding the concrete implementations • Polymorphism – objects has more than one form • Inheritance – reusing functionalities  And some of their derived form/application – • Program to an interface, not to an implementation • Favor object composition over inheritance and much more, most notably, Design Patterns……………
  • 4. Single Responsibility Principle  Open-Close Principle  Liskov Substitution Principle  Interface Segregation Principle  Dependency Inversion Principle
  • 5. A defining characteristics of a framework  It’s all about moving away the flow of controls to the frameworks.
  • 6. Let us consider a program that perform some simple command line query – puts 'What is your name?' name = gets process_name(name) puts 'What is your quest?' quest = gets process_quest(quest)
  • 7. However, in a window system, I would write something like this – require 'tk' root = TkRoot.new() name_label = TkLabel.new() {text "What is Your Name?"} name_label.pack name = TkEntry.new(root).pack name.bind("FocusOut") {process_name(name)} quest_label = TkLabel.new() {text "What is Your Quest?"} quest_label.pack quest = TkEntry.new(root).pack quest.bind("FocusOut") {process_quest(quest)} Tk.mainloop()
  • 8. The control of execution has been handed over to the windowing system.  The control is Inverted, the framework calls the code rather than rather than the code calling the framework.  This principle is also known as Hollywood Principle.
  • 9. Let us write a software component that provides a list of movies directed by a particular director – class MovieLister... public Movie[] moviesDirectedBy(String arg) { List allMovies = finder.findAll(); for (Iterator it = allMovies.iterator(); it.hasNext();) { Movie movie = (Movie) it.next(); if (!movie.getDirector().equals(arg)) it.remove(); } return (Movie[]) allMovies.toArray(new Movie[allMovies.size()]); }
  • 10. moviesDirectedBy is dependent on the implementation of the finder object.  Let’s make this method completely independent of how all the movies are being stored. So all the method does is refer to a finder, and all that finder does is know how to respond to the findAll method.
  • 11. It can be done easily by defining an interface – public interface MovieFinder { List findAll(); }
  • 12. Let’s provide a concrete implementation of MovieFinder - class MovieLister... private MovieFinder finder; public MovieLister() { finder = new ColonDelimitedMovieFinder("movies1.txt"); }
  • 13. Now we have a new problem – how to get an instance of the right finder implementation into place
  • 14. The implementation class for the finder isn't linked into the program at compile time. Instead we want this lister to work with any implementation, and for that implementation to be plugged in at some later point.  The problem is how that link could be made so that lister class is ignorant of the implementation class, but can still talk to an instance to do its work.
  • 15. The basic idea of the Dependency Injection is to have a separate object, an assembler, that populates a field in the lister class with an appropriate implementation for the finder interface.
  • 16. Type 1 IoC - Interface Injection  Type 2 IoC - Setter Injection  Type 3 IoC - Constructor Injection
  • 17. Define a setter method for populating finder – class MovieLister... private MovieFinder finder; public void setFinder(MovieFinder finder) { this.finder = finder; }
  • 18. Similarly let us define a setter for the filename - class ColonMovieFinder... public void setFilename(String filename) { this.filename = filename; }
  • 19. The third step is to set up the configuration for the files. Spring supports configuration through XML files and also through code, but XML is the expected way to do it – <beans> <bean id="MovieLister" class="spring.MovieLister"> <property name="finder"> <ref local="MovieFinder"/> </property> </bean> <bean id="MovieFinder" class="spring.ColonMovieFinder"> <property name="filename"> <value>movies1.txt</value> </property> </bean> </beans>
  • 20. And then the test – public void testWithSpring() throws Exception{ ApplicationContext ctx = new FileSystemXmlApplicationContext("spring.xml"); MovieLister lister = (MovieLister)ctx.getBean("MovieLister"); Movie[] movies = lister.moviesDirectedBy("Sergio Leone"); assertEquals("Once Upon a Time in the West", movies[0].getTitle()); } WHERE DID THE new GO ?!
  • 22. Spring  Google Guice – created by Google  Pico Container  Avalon  Context and Dependency Injection – official Sun Java DI Container  Seasar
  • 23. Assume you have a graphical class with many set...() methods. After each set method, the data of the graphics changed, thus the graphics changed and thus the graphics need to be updated on screen.  Assume to repaint the graphics you must call Display.update().
  • 24. The classical approach is to solve this by adding more code. At the end of each set method you write – void set...(...) { : : Display.update(); }
  • 25. What will happen if there are 20-30 of these set methods ?  Also whenever a new set-method is added, developers must be sure to not forget adding this to the end, otherwise they just created a bug.
  • 26. AOP solves this without adding tons of code, instead you add an aspect - after() : set() { Display.update(); } after running any method that is a set pointcut, run the following code.
  • 27. And you define a point cut – pointcut set() : execution(* set*(*) ) && this(MyGraphicsClass) && within(com.company.*); If a method is named set* (* means any name might follow after set), regardless of what the method returns (first asterisk) or what parameters it takes (third asterisk) and it is a method of MyGraphicsClass and this class is part of the package com.company.*, then this is a set() pointcut.
  • 28. This example also shows one of the big downsides of AOP. It is actually doing something that many programmers consider an Anti-Pattern. The exact pattern is called Action at a distance.  Action at a distance is an anti-pattern (a recognized common error) in which behavior in one part of a program varies wildly based on difficult or impossible to identify operations in another part of the program.
  • 29. AspectJ  Spring  Seasar
  • 30. Object-relational mapping is a programming technique for converting data between incompatible type systems in relational databases and object-oriented programming languages.  This creates, in effect, a virtual object database that can be used from within the programming language.  It's good for abstracting the datastore out in order to provide an interface that can be used in your code.
  • 31. Without ORM, we write code like this – String sql = "SELECT ... FROM persons WHERE id = 10"; DbCommand cmd = new DbCommand(connection, sql); Result res = cmd.Execute(); String name = res[0]["FIRST_NAME"];  With the help of ORM tools, we can do – Person p = repository.GetPerson(10); String name = p.FirstName; Or - Person p = Person.Get(Person.Properties.Id == 10);
  • 32. The SQL is hidden away from logic code. This has the benefit of allowing developers to more easily support more database engines.  Developers can focus on writing the logic, instead of getting all the SQL right. The code will typically be more readable as well.
  • 33. Object-relational mapping is the Vietnam of our industry – Ted Neward.  Developers are struggling for years with the huge mismatch between relational database models and traditional object models.
  • 34. Granularity – more classes than the number of corresponding tables.  Subtyping  Identity – primary key vs. object identity and object equality  Associations – unidirectional in OOP vs. foreign keys.  Data Navigation – walking the object graph vs. SQL joins
  • 35. Hibernate – the highly popular ORM tool for Java, has a corresponding .NET version too (NHibernate). Uses HQL.  Java Persistence API – official sun java specification for managing persistence.
  • 40. Seam Framework – AJAX + JSF + JPA + EJB 3.0 + BPM  Log4J – logging framework for Java  JUnit – Test Driven Development in Java  Maven – actually not a framework, more of a build system, but still………
  • 41. Wikipedia  Personal Website of Martin Fowler  Stackoverflow  Official Spring Documentation  Coding Horror  Official Java EE 6 Tutorial