SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
Towards Improving Interface
Modularity in Legacy Java
Software through Automated
Refactoring
Raffi Khatchadourian, Olivia Moore
Computer Systems Technology, New York City College of Technology
City University of New York, USA
Hidehiko Masuhara
Mathematical and Computing Science, Tokyo Institute of Technology,
Japan
International Workshop on Language Modularity 2016 (LaMOD'16)
International Conference on Modularity (MODULARITY'16)
MĂĄlaga, Spain
March 15, 2016
Some History
Java was invented in the 90's as an Object-Oriented language.
Largest change was in ~2005 with Java 5.
Generics.
Enhanced forloops.
Annotations.
Type-safe enumerations.
Concurrency enhancements (AtomicInteger).
Java 8 is Massive
10 years later, Java 8 is packed with new features.
Lambda Expressions
A block of code that you can pass around so it can be
executed later, once or multiple times.
Anonymous methods.
Reduce verbosity caused by anonymous classes.
How are they different from Java methods?
Lambdas
(intx,inty)->x+y
()->42
(Strings)->{System.out.println(s);}
()->{return"Hello";}
Using Lambdas In Collections
Java 8 introduced a forEach()method for Collections that accepts a
lambda expression.
List<String>myList=Arrays.asList({"one","two","three"});
myList.forEach((Strings)->{System.out.println(s););
//printseachstringinthelist.
Or, more simply:
myList.forEach(s->System.out.println(s));
//thetypeofsisinferred.
Default Methods
Add default behaviors to interfaces
Why default methods?
Java 8 has lambda expressions. We want to start using them:
List<?>list=...
list.forEach(...);//lambdacodegoeshere
There's a problem
The forEachmethod isn’t declared by java.util.Listnor the
java.util.Collectioninterface because doing so would break
existing implementations.
Default Methods
We have lambdas, but we can't force new behaviors into current
libraries.
Solution: defaultmethods.
Default Methods
Traditionally, interfaces can't have method definitions (just
declarations).
Default methods supply default implementations of interface
methods.
By default, implementers will receive this implementation if they don't
provide their own.
Examples
Example 1
Basics
publicinterfaceA{
defaultvoidfoo(){
System.out.println("CallingA.foo()");
}
}
publicclassClazzimplementsA{
}
Client code
Clazzclazz=newClazz();
clazz.foo();
Output
"CallingA.foo()"
Example 2
Getting messy
publicinterfaceA{
defaultvoidfoo(){
System.out.println("CallingA.foo()");
}
}
publicinterfaceB{
defaultvoidfoo(){
System.out.println("CallingB.foo()");
}
}
publicclassClazzimplementsA,B{
}
Does this code compile?
Of course not (Java is not C++)!
class Clazzinherits defaults for foo() from both
types Aand B
How do we fix it?
Option A:
publicclassClazzimplementsA,B{
publicvoidfoo(){/*...*/}
}
We resolve it manually by overriding the conflicting method.
Option B:
publicclassClazzimplementsA,B{
publicvoidfoo(){
A.super.foo();//orB.super.foo()
}
}
We call the default implementation of method foo()from either
interface Aor Binstead of implementing our own.
Going back to the example of forEachmethod, how can we force it's
default implementation on all of the iterable collections?
Let's take a look at the Java UML for all the iterable Collections:
To add a default behavior to all the iterable collections, a default
forEachmethod was added to the Iterable<E>interface.
We can find its default implementation in java.lang.Iterable
interface:
@FunctionalInterface
publicinterfaceIterable{
Iteratoriterator();
defaultvoidforEach(Consumer<?superT>action){
Objects.requireNonNull(action);
for(Tt:this){
action.accept(t);
}
}
}
The forEachmethod takes a java.util.function.Consumer
functional interface type as a parameter, which enables us to pass in a
lambda or a method reference as follows:
List<?>list=...
list.forEach(System.out::println);
This is also valid for Sets and Queues, for example, since both classes
implement the Iterableinterface.
Specific collections, e.g., UnmodifiableCollection, may override
the default implementation.
Summary
Default methods can be seen as a bridge between lambdas and JDK
libraries.
Can be used in interfaces to provide default implementations of
otherwise abstract methods.
Clients can optionally implement (override) them.
Can eliminate the need for skeletal implementators like
.
Can eliminate the need for utility classes like .
staticmethods are now also allowed in interfaces.
AbstractCollection
Collections
Open Problems
Can eliminate the need for skeletal implementators like
.AbstractCollection
Motivation
Two cases:
1. Complete migration of skeletal implementation to interface.
Makes type hierarchy less complicated.
One less type.
Makes interfaces easier to implement.
No global analysis required to find skeletal implemention.
Makes interfaces easier to maintain.
No simultaneous modifications between interface and skeletal
implementation required.
2. Partial migration of skeletal implementation to interface.
Possibly makes interfaces easier to implement.
All implementations may not need to extend the skeletal
implementation.
Possibly makes interfaces easier to maintain.
Possibily less simultaneous modifications between interface and
skeletal implementation required.
Open Problems
Can eliminate the need for skeletal implementators like
.AbstractCollection
Can we automate this?
1. How do we determine if an interface
implementor is "skeletal?"
2. What is the criteria for an instance method to be
converted to a default method?
3. What if there is a hierarchy of skeletal
implementors, e.g., AbstractCollection,
AbstractList?
4. How do we preserve semantics?
5. What client changes are necessary?
Skeletal Implementators
Abstract classes that provide skeletal
implementations for interfaces.
Let's take a look at the Java UML for AbstractCollection:
Why Is This Complicated?
Corresponds to moving a skeletal implementation to an interface.
# From a class To an interface
1. instancemethod defaultmethod
Can we not simply use a move method refactoring?
No. The inherent problem is that, unlike classes,
interfaces may extend multiple interfaces. As such, we
now have a kind of multiple inheritance problem to
deal with.
Some (perhaps) Obvious
Preconditions
Source instancemethod must not access any instance fields.
Interfaces may not have instance fields.
Can't currently have a defaultmethod in the target interface with
the same signature.
Can't modify target method's visibility.
Some Obvious Tasks
Must replace the target method in the interface(add a body to it).
Must add the defaultkeyword.
Must remove any @Overrideannotations (it's top-level now).
If nothing left in abstractclass, remove it?
Need to deal with documentation.
Some Not-so-obvious
Preconditions
Suppose we have the following situation:
interfaceI{
voidm();
}
interfaceJ{
voidm();
}
abstractclassAimplementsI,J{
@Override
voidm(){...}
}
Here, Aprovides a partial implementation of I.m(), which also happens
to be declared as part of interface J.
Some Not-so-obvious
Preconditions
Now, we pull up A.m()to be a default method of I:
interfaceI{
defaultvoidm(){..}//wasvoidm();
}
interfaceJ{
voidm();//staysthesame.
}
abstractclassAimplementsI,J{
//nowempty,was:voidm(){...}
}
We now have a compile-time error in Abecause Aneeds to declare
which m()it inherits.
In general, inheritance hierarchies may be large and complicated.
Other preconditions may also exist (work in progress).
Live Demo
Migrate Skeletal Implementation to Interface prototype refactoring plug-in
for Eclipse
References & Documentation &
Interesting Links
Horstmann, Cay S. (2014-01-10). Java SE8 for the Really Impatient: A Short Co
Basics (Java Series). Pearson Education.
http://download.java.net/jdk8/docs/
http://download.java.net/jdk8/docs/api/
https://blogs.oracle.com/thejavatutorials/entry/jdk_8_documentation_develo
http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
Questions?

Weitere Àhnliche Inhalte

Was ist angesagt?

Polymorphism presentation in java
Polymorphism presentation in javaPolymorphism presentation in java
Polymorphism presentation in javaAhsan Raja
 
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...Raffi Khatchadourian
 
Java interfaces
Java interfacesJava interfaces
Java interfacesjehan1987
 
java interface and packages
java interface and packagesjava interface and packages
java interface and packagesVINOTH R
 
Object+oriented+programming+in+java
Object+oriented+programming+in+javaObject+oriented+programming+in+java
Object+oriented+programming+in+javaYe Win
 
Java interview questions 1
Java interview questions 1Java interview questions 1
Java interview questions 1Sherihan Anver
 
Interface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar SinghInterface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar Singhdheeraj_cse
 
Poster on Automated Refactoring of Legacy Java Software to Default Methods
Poster on Automated Refactoring of Legacy Java Software to Default MethodsPoster on Automated Refactoring of Legacy Java Software to Default Methods
Poster on Automated Refactoring of Legacy Java Software to Default MethodsRaffi Khatchadourian
 
Basics of Java
Basics of JavaBasics of Java
Basics of JavaPrarabdh Garg
 
Chapter 9 Interface
Chapter 9 InterfaceChapter 9 Interface
Chapter 9 InterfaceOUM SAOKOSAL
 
Java interface
Java interfaceJava interface
Java interfaceArati Gadgil
 
Java interview questions 2
Java interview questions 2Java interview questions 2
Java interview questions 2Sherihan Anver
 
Lecture 18
Lecture 18Lecture 18
Lecture 18talha ijaz
 
Java questions for interview
Java questions for interviewJava questions for interview
Java questions for interviewKuntal Bhowmick
 
Interface java
Interface java Interface java
Interface java atiafyrose
 

Was ist angesagt? (20)

Polymorphism presentation in java
Polymorphism presentation in javaPolymorphism presentation in java
Polymorphism presentation in java
 
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...
Automated Refactoring of Legacy Java Software to Default Methods Talk at ICSE...
 
Java interfaces
Java interfacesJava interfaces
Java interfaces
 
java interface and packages
java interface and packagesjava interface and packages
java interface and packages
 
Object+oriented+programming+in+java
Object+oriented+programming+in+javaObject+oriented+programming+in+java
Object+oriented+programming+in+java
 
Java interview questions 1
Java interview questions 1Java interview questions 1
Java interview questions 1
 
Interface in java
Interface in javaInterface in java
Interface in java
 
Class method
Class methodClass method
Class method
 
Ppt chapter10
Ppt chapter10Ppt chapter10
Ppt chapter10
 
Interfaces in java
Interfaces in javaInterfaces in java
Interfaces in java
 
Interface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar SinghInterface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar Singh
 
Poster on Automated Refactoring of Legacy Java Software to Default Methods
Poster on Automated Refactoring of Legacy Java Software to Default MethodsPoster on Automated Refactoring of Legacy Java Software to Default Methods
Poster on Automated Refactoring of Legacy Java Software to Default Methods
 
Basics of Java
Basics of JavaBasics of Java
Basics of Java
 
Interface
InterfaceInterface
Interface
 
Chapter 9 Interface
Chapter 9 InterfaceChapter 9 Interface
Chapter 9 Interface
 
Java interface
Java interfaceJava interface
Java interface
 
Java interview questions 2
Java interview questions 2Java interview questions 2
Java interview questions 2
 
Lecture 18
Lecture 18Lecture 18
Lecture 18
 
Java questions for interview
Java questions for interviewJava questions for interview
Java questions for interview
 
Interface java
Interface java Interface java
Interface java
 

Andere mochten auch

Rising Underwriting Capacity Driving The Asia Pacific Insurance Sector: Ken R...
Rising Underwriting Capacity Driving The Asia Pacific Insurance Sector: Ken R...Rising Underwriting Capacity Driving The Asia Pacific Insurance Sector: Ken R...
Rising Underwriting Capacity Driving The Asia Pacific Insurance Sector: Ken R...Ankur Gupta
 
RevisĂŁo sobre resĂ­duos de serviços de saĂșde
RevisĂŁo sobre resĂ­duos de serviços de saĂșdeRevisĂŁo sobre resĂ­duos de serviços de saĂșde
RevisĂŁo sobre resĂ­duos de serviços de saĂșdeTCC_FARMACIA_FEF
 
Please send catalogers : metadata staffing in the 21st century
Please send catalogers : metadata staffing in the 21st centuryPlease send catalogers : metadata staffing in the 21st century
Please send catalogers : metadata staffing in the 21st centuryJennifer Liss
 
Portaleducamadrid 1
Portaleducamadrid 1Portaleducamadrid 1
Portaleducamadrid 1mariajosg
 
Promo Curs NegociaciĂł, MediaciĂł, Conflictes I Gabinets De Crisi
Promo Curs NegociaciĂł, MediaciĂł, Conflictes I Gabinets De CrisiPromo Curs NegociaciĂł, MediaciĂł, Conflictes I Gabinets De Crisi
Promo Curs NegociaciĂł, MediaciĂł, Conflictes I Gabinets De Crisi1977bcn
 
The Information that You Gather: Application of Ethics & Privacy in Fundraising
The Information that You Gather: Application of Ethics & Privacy in FundraisingThe Information that You Gather: Application of Ethics & Privacy in Fundraising
The Information that You Gather: Application of Ethics & Privacy in FundraisingUniversity of Victoria
 
NSW Transport Infrastructure Leaders 2016
NSW Transport Infrastructure Leaders 2016NSW Transport Infrastructure Leaders 2016
NSW Transport Infrastructure Leaders 2016Samantha Young
 
Search For Extraterrestrial Life
Search For Extraterrestrial LifeSearch For Extraterrestrial Life
Search For Extraterrestrial LifeCraigGantt
 
C class test no1 1ere a
C class test no1 1ere aC class test no1 1ere a
C class test no1 1ere ablessedkkr
 
WSGBelieve in bikes
WSGBelieve in bikesWSGBelieve in bikes
WSGBelieve in bikesLyndsey Hewitt
 
engaging your community - how to build a huge email list
engaging your community - how to build a huge email listengaging your community - how to build a huge email list
engaging your community - how to build a huge email listengage
 
Exploring and Encouraging Young Alumni Giving: Tim Ponisciak and Carol Phillips
Exploring and Encouraging Young Alumni Giving: Tim Ponisciak and Carol PhillipsExploring and Encouraging Young Alumni Giving: Tim Ponisciak and Carol Phillips
Exploring and Encouraging Young Alumni Giving: Tim Ponisciak and Carol PhillipsTimothy Ponisciak
 
Portaleducamadrid 1
Portaleducamadrid 1Portaleducamadrid 1
Portaleducamadrid 1mariajosg
 
ĐŸŃ€Đ”Đ·Đ”ĐœŃ‚Đ°Ń†ĐžŃ 1.14 - Đ“ĐŸŃŃ‚Đ”ĐČŃ‹Đ” эĐșĐŸ-ĐŽĐŸĐŒĐ° ĐŽĐ»Ń ŃƒŃ‡Ń‘ĐœŃ‹Ń… ĐČ Đ˜ŃĐ»Đ°ĐœĐŽĐžĐž
ĐŸŃ€Đ”Đ·Đ”ĐœŃ‚Đ°Ń†ĐžŃ 1.14 - Đ“ĐŸŃŃ‚Đ”ĐČŃ‹Đ” эĐșĐŸ-ĐŽĐŸĐŒĐ° ĐŽĐ»Ń ŃƒŃ‡Ń‘ĐœŃ‹Ń… ĐČ Đ˜ŃĐ»Đ°ĐœĐŽĐžĐžĐŸŃ€Đ”Đ·Đ”ĐœŃ‚Đ°Ń†ĐžŃ 1.14 - Đ“ĐŸŃŃ‚Đ”ĐČŃ‹Đ” эĐșĐŸ-ĐŽĐŸĐŒĐ° ĐŽĐ»Ń ŃƒŃ‡Ń‘ĐœŃ‹Ń… ĐČ Đ˜ŃĐ»Đ°ĐœĐŽĐžĐž
ĐŸŃ€Đ”Đ·Đ”ĐœŃ‚Đ°Ń†ĐžŃ 1.14 - Đ“ĐŸŃŃ‚Đ”ĐČŃ‹Đ” эĐșĐŸ-ĐŽĐŸĐŒĐ° ĐŽĐ»Ń ŃƒŃ‡Ń‘ĐœŃ‹Ń… ĐČ Đ˜ŃĐ»Đ°ĐœĐŽĐžĐžĐŸĐ°ĐČДл Đ•Ń„ĐžĐŒĐŸĐČ
 
Leizel a montero pamahalaan
Leizel a  montero pamahalaanLeizel a  montero pamahalaan
Leizel a montero pamahalaanAlice Bernardo
 

Andere mochten auch (20)

Rising Underwriting Capacity Driving The Asia Pacific Insurance Sector: Ken R...
Rising Underwriting Capacity Driving The Asia Pacific Insurance Sector: Ken R...Rising Underwriting Capacity Driving The Asia Pacific Insurance Sector: Ken R...
Rising Underwriting Capacity Driving The Asia Pacific Insurance Sector: Ken R...
 
RevisĂŁo sobre resĂ­duos de serviços de saĂșde
RevisĂŁo sobre resĂ­duos de serviços de saĂșdeRevisĂŁo sobre resĂ­duos de serviços de saĂșde
RevisĂŁo sobre resĂ­duos de serviços de saĂșde
 
Please send catalogers : metadata staffing in the 21st century
Please send catalogers : metadata staffing in the 21st centuryPlease send catalogers : metadata staffing in the 21st century
Please send catalogers : metadata staffing in the 21st century
 
Portaleducamadrid 1
Portaleducamadrid 1Portaleducamadrid 1
Portaleducamadrid 1
 
Promo Curs NegociaciĂł, MediaciĂł, Conflictes I Gabinets De Crisi
Promo Curs NegociaciĂł, MediaciĂł, Conflictes I Gabinets De CrisiPromo Curs NegociaciĂł, MediaciĂł, Conflictes I Gabinets De Crisi
Promo Curs NegociaciĂł, MediaciĂł, Conflictes I Gabinets De Crisi
 
The Information that You Gather: Application of Ethics & Privacy in Fundraising
The Information that You Gather: Application of Ethics & Privacy in FundraisingThe Information that You Gather: Application of Ethics & Privacy in Fundraising
The Information that You Gather: Application of Ethics & Privacy in Fundraising
 
NSW Transport Infrastructure Leaders 2016
NSW Transport Infrastructure Leaders 2016NSW Transport Infrastructure Leaders 2016
NSW Transport Infrastructure Leaders 2016
 
Search For Extraterrestrial Life
Search For Extraterrestrial LifeSearch For Extraterrestrial Life
Search For Extraterrestrial Life
 
C class test no1 1ere a
C class test no1 1ere aC class test no1 1ere a
C class test no1 1ere a
 
Sant Cugat
Sant CugatSant Cugat
Sant Cugat
 
WSGBelieve in bikes
WSGBelieve in bikesWSGBelieve in bikes
WSGBelieve in bikes
 
Abdelmonem salem cv
Abdelmonem salem cvAbdelmonem salem cv
Abdelmonem salem cv
 
Codigo Etica
Codigo EticaCodigo Etica
Codigo Etica
 
engaging your community - how to build a huge email list
engaging your community - how to build a huge email listengaging your community - how to build a huge email list
engaging your community - how to build a huge email list
 
Exploring and Encouraging Young Alumni Giving: Tim Ponisciak and Carol Phillips
Exploring and Encouraging Young Alumni Giving: Tim Ponisciak and Carol PhillipsExploring and Encouraging Young Alumni Giving: Tim Ponisciak and Carol Phillips
Exploring and Encouraging Young Alumni Giving: Tim Ponisciak and Carol Phillips
 
Portaleducamadrid 1
Portaleducamadrid 1Portaleducamadrid 1
Portaleducamadrid 1
 
Cultivating Mid-Level Donors
Cultivating Mid-Level DonorsCultivating Mid-Level Donors
Cultivating Mid-Level Donors
 
Tipos de mercados
Tipos de mercadosTipos de mercados
Tipos de mercados
 
ĐŸŃ€Đ”Đ·Đ”ĐœŃ‚Đ°Ń†ĐžŃ 1.14 - Đ“ĐŸŃŃ‚Đ”ĐČŃ‹Đ” эĐșĐŸ-ĐŽĐŸĐŒĐ° ĐŽĐ»Ń ŃƒŃ‡Ń‘ĐœŃ‹Ń… ĐČ Đ˜ŃĐ»Đ°ĐœĐŽĐžĐž
ĐŸŃ€Đ”Đ·Đ”ĐœŃ‚Đ°Ń†ĐžŃ 1.14 - Đ“ĐŸŃŃ‚Đ”ĐČŃ‹Đ” эĐșĐŸ-ĐŽĐŸĐŒĐ° ĐŽĐ»Ń ŃƒŃ‡Ń‘ĐœŃ‹Ń… ĐČ Đ˜ŃĐ»Đ°ĐœĐŽĐžĐžĐŸŃ€Đ”Đ·Đ”ĐœŃ‚Đ°Ń†ĐžŃ 1.14 - Đ“ĐŸŃŃ‚Đ”ĐČŃ‹Đ” эĐșĐŸ-ĐŽĐŸĐŒĐ° ĐŽĐ»Ń ŃƒŃ‡Ń‘ĐœŃ‹Ń… ĐČ Đ˜ŃĐ»Đ°ĐœĐŽĐžĐž
ĐŸŃ€Đ”Đ·Đ”ĐœŃ‚Đ°Ń†ĐžŃ 1.14 - Đ“ĐŸŃŃ‚Đ”ĐČŃ‹Đ” эĐșĐŸ-ĐŽĐŸĐŒĐ° ĐŽĐ»Ń ŃƒŃ‡Ń‘ĐœŃ‹Ń… ĐČ Đ˜ŃĐ»Đ°ĐœĐŽĐžĐž
 
Leizel a montero pamahalaan
Leizel a  montero pamahalaanLeizel a  montero pamahalaan
Leizel a montero pamahalaan
 

Ähnlich wie Towards Improving Interface Modularity in Legacy Java Software Through Automated Refactoring

Automatic Migration of Legacy Java Method Implementations to Interfaces
Automatic Migration of Legacy Java Method Implementations to InterfacesAutomatic Migration of Legacy Java Method Implementations to Interfaces
Automatic Migration of Legacy Java Method Implementations to InterfacesRaffi Khatchadourian
 
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...Raffi Khatchadourian
 
Core_Java_Interview.pdf
Core_Java_Interview.pdfCore_Java_Interview.pdf
Core_Java_Interview.pdfansariparveen06
 
Java 8 - An Overview
Java 8 - An OverviewJava 8 - An Overview
Java 8 - An OverviewIndrajit Das
 
Java 8-revealed
Java 8-revealedJava 8-revealed
Java 8-revealedHamed Hatami
 
Introduction to new features in java 8
Introduction to new features in java 8Introduction to new features in java 8
Introduction to new features in java 8Raffi Khatchadourian
 
14274730 (1).ppt
14274730 (1).ppt14274730 (1).ppt
14274730 (1).pptaptechaligarh
 
Understanding And Using Reflection
Understanding And Using ReflectionUnderstanding And Using Reflection
Understanding And Using ReflectionGanesh Samarthyam
 
21UCAC31 Java Programming.pdf(MTNC)(BCA)
21UCAC31 Java Programming.pdf(MTNC)(BCA)21UCAC31 Java Programming.pdf(MTNC)(BCA)
21UCAC31 Java Programming.pdf(MTNC)(BCA)ssuser7f90ae
 
Functional Programming In Jdk8
Functional Programming In Jdk8 Functional Programming In Jdk8
Functional Programming In Jdk8 Bansilal Haudakari
 
Bt0074 oops with java2
Bt0074 oops with java2Bt0074 oops with java2
Bt0074 oops with java2Techglyphs
 
Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...Raffi Khatchadourian
 
Top 371 java fa qs useful for freshers and experienced
Top 371 java fa qs useful for freshers and experiencedTop 371 java fa qs useful for freshers and experienced
Top 371 java fa qs useful for freshers and experiencedGaurav Maheshwari
 
Java Faqs useful for freshers and experienced
Java Faqs useful for freshers and experiencedJava Faqs useful for freshers and experienced
Java Faqs useful for freshers and experiencedyearninginjava
 
Software Uni Conf October 2014
Software Uni Conf October 2014Software Uni Conf October 2014
Software Uni Conf October 2014Nayden Gochev
 
Suga java training_with_footer
Suga java training_with_footerSuga java training_with_footer
Suga java training_with_footerSugavanam Natarajan
 
Java for Mainframers
Java for MainframersJava for Mainframers
Java for MainframersRich Helton
 

Ähnlich wie Towards Improving Interface Modularity in Legacy Java Software Through Automated Refactoring (20)

Automatic Migration of Legacy Java Method Implementations to Interfaces
Automatic Migration of Legacy Java Method Implementations to InterfacesAutomatic Migration of Legacy Java Method Implementations to Interfaces
Automatic Migration of Legacy Java Method Implementations to Interfaces
 
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
Open Problems in Automatically Refactoring Legacy Java Software to use New Fe...
 
Colloquium Report
Colloquium ReportColloquium Report
Colloquium Report
 
Core_Java_Interview.pdf
Core_Java_Interview.pdfCore_Java_Interview.pdf
Core_Java_Interview.pdf
 
Java 8 - An Overview
Java 8 - An OverviewJava 8 - An Overview
Java 8 - An Overview
 
Java 8-revealed
Java 8-revealedJava 8-revealed
Java 8-revealed
 
Introduction to new features in java 8
Introduction to new features in java 8Introduction to new features in java 8
Introduction to new features in java 8
 
Introduction to new features in java 8
Introduction to new features in java 8Introduction to new features in java 8
Introduction to new features in java 8
 
14274730 (1).ppt
14274730 (1).ppt14274730 (1).ppt
14274730 (1).ppt
 
Understanding And Using Reflection
Understanding And Using ReflectionUnderstanding And Using Reflection
Understanding And Using Reflection
 
Insight into java 1.8, OOP VS FP
Insight into java 1.8, OOP VS FPInsight into java 1.8, OOP VS FP
Insight into java 1.8, OOP VS FP
 
21UCAC31 Java Programming.pdf(MTNC)(BCA)
21UCAC31 Java Programming.pdf(MTNC)(BCA)21UCAC31 Java Programming.pdf(MTNC)(BCA)
21UCAC31 Java Programming.pdf(MTNC)(BCA)
 
Functional Programming In Jdk8
Functional Programming In Jdk8 Functional Programming In Jdk8
Functional Programming In Jdk8
 
Bt0074 oops with java2
Bt0074 oops with java2Bt0074 oops with java2
Bt0074 oops with java2
 
Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...Defaultification Refactoring: A Tool for Automatically Converting Java Method...
Defaultification Refactoring: A Tool for Automatically Converting Java Method...
 
Top 371 java fa qs useful for freshers and experienced
Top 371 java fa qs useful for freshers and experiencedTop 371 java fa qs useful for freshers and experienced
Top 371 java fa qs useful for freshers and experienced
 
Java Faqs useful for freshers and experienced
Java Faqs useful for freshers and experiencedJava Faqs useful for freshers and experienced
Java Faqs useful for freshers and experienced
 
Software Uni Conf October 2014
Software Uni Conf October 2014Software Uni Conf October 2014
Software Uni Conf October 2014
 
Suga java training_with_footer
Suga java training_with_footerSuga java training_with_footer
Suga java training_with_footer
 
Java for Mainframers
Java for MainframersJava for Mainframers
Java for Mainframers
 

Mehr von New York City College of Technology Computer Systems Technology Colloquium

Mehr von New York City College of Technology Computer Systems Technology Colloquium (11)

Ontology-based Classification and Faceted Search Interface for APIs
Ontology-based Classification and Faceted Search Interface for APIsOntology-based Classification and Faceted Search Interface for APIs
Ontology-based Classification and Faceted Search Interface for APIs
 
Data-driven, Interactive Scientific Articles in a Collaborative Environment w...
Data-driven, Interactive Scientific Articles in a Collaborative Environment w...Data-driven, Interactive Scientific Articles in a Collaborative Environment w...
Data-driven, Interactive Scientific Articles in a Collaborative Environment w...
 
Cloud Technology: Virtualization
Cloud Technology: VirtualizationCloud Technology: Virtualization
Cloud Technology: Virtualization
 
Google BigTable
Google BigTableGoogle BigTable
Google BigTable
 
Pharmacology Powered by Computational Analysis: Predicting Cardiotoxicity of ...
Pharmacology Powered by Computational Analysis: Predicting Cardiotoxicity of ...Pharmacology Powered by Computational Analysis: Predicting Cardiotoxicity of ...
Pharmacology Powered by Computational Analysis: Predicting Cardiotoxicity of ...
 
How We Use Functional Programming to Find the Bad Guys
How We Use Functional Programming to Find the Bad GuysHow We Use Functional Programming to Find the Bad Guys
How We Use Functional Programming to Find the Bad Guys
 
Static Analysis and Verification of C Programs
Static Analysis and Verification of C ProgramsStatic Analysis and Verification of C Programs
Static Analysis and Verification of C Programs
 
Test Dependencies and the Future of Build Acceleration
Test Dependencies and the Future of Build AccelerationTest Dependencies and the Future of Build Acceleration
Test Dependencies and the Future of Build Acceleration
 
Big Data Challenges and Solutions
Big Data Challenges and SolutionsBig Data Challenges and Solutions
Big Data Challenges and Solutions
 
Android Apps the Right Way
Android Apps the Right WayAndroid Apps the Right Way
Android Apps the Right Way
 
More than Words: Advancing Prosodic Analysis
More than Words: Advancing Prosodic AnalysisMore than Words: Advancing Prosodic Analysis
More than Words: Advancing Prosodic Analysis
 

KĂŒrzlich hochgeladen

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

KĂŒrzlich hochgeladen (20)

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

Towards Improving Interface Modularity in Legacy Java Software Through Automated Refactoring