SlideShare a Scribd company logo
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?

More Related Content

What's hot

Polymorphism presentation in java
Polymorphism presentation in javaPolymorphism presentation in java
Polymorphism presentation in java
Ahsan 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 interfaces
jehan1987
 
java interface and packages
java interface and packagesjava interface and packages
java interface and packages
VINOTH R
 
Object+oriented+programming+in+java
Object+oriented+programming+in+javaObject+oriented+programming+in+java
Object+oriented+programming+in+java
Ye Win
 
Java interview questions 1
Java interview questions 1Java interview questions 1
Java interview questions 1
Sherihan Anver
 
Interface in java
Interface in javaInterface in java
Class method
Class methodClass method
Class method
Richard Styner
 
Ppt chapter10
Ppt chapter10Ppt chapter10
Ppt chapter10
Richard Styner
 
Interfaces in java
Interfaces in javaInterfaces in java
Interfaces in java
Abishek Purushothaman
 
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
dheeraj_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 Methods
Raffi Khatchadourian
 
Basics of Java
Basics of JavaBasics of Java
Basics of Java
Prarabdh Garg
 
Interface
InterfaceInterface
Interface
kamal kotecha
 
Chapter 9 Interface
Chapter 9 InterfaceChapter 9 Interface
Chapter 9 Interface
OUM SAOKOSAL
 
Java interface
Java interfaceJava interface
Java interface
Arati Gadgil
 
Java interview questions 2
Java interview questions 2Java interview questions 2
Java interview questions 2
Sherihan Anver
 
Lecture 18
Lecture 18Lecture 18
Lecture 18
talha ijaz
 
Java questions for interview
Java questions for interviewJava questions for interview
Java questions for interview
Kuntal Bhowmick
 
Interface java
Interface java Interface java
Interface java
atiafyrose
 

What's hot (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
 

Viewers also liked

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 century
Jennifer Liss
 
Portaleducamadrid 1
Portaleducamadrid 1Portaleducamadrid 1
Portaleducamadrid 1
mariajosg
 
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 Fundraising
University 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
 
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 Phillips
Timothy Ponisciak
 
Portaleducamadrid 1
Portaleducamadrid 1Portaleducamadrid 1
Portaleducamadrid 1
mariajosg
 
Tipos de mercados
Tipos de mercadosTipos de mercados
Tipos de mercados
ANTONIA SANIN JIMENEZ
 
Презентация 1.14 - Гостевые эко-дома для учёных в Исландии
Презентация 1.14 - Гостевые эко-дома для учёных в ИсландииПрезентация 1.14 - Гостевые эко-дома для учёных в Исландии
Презентация 1.14 - Гостевые эко-дома для учёных в Исландии
Павел Ефимов
 
Leizel a montero pamahalaan
Leizel a  montero pamahalaanLeizel a  montero pamahalaan
Leizel a montero pamahalaan
Alice Bernardo
 

Viewers also liked (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
 

Similar to 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 Interfaces
Raffi 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
 
Colloquium Report
Colloquium ReportColloquium Report
Colloquium Report
Mohammad Faizan
 
Core_Java_Interview.pdf
Core_Java_Interview.pdfCore_Java_Interview.pdf
Core_Java_Interview.pdf
ansariparveen06
 
Java 8 - An Overview
Java 8 - An OverviewJava 8 - An Overview
Java 8 - An Overview
Indrajit Das
 
Java 8-revealed
Java 8-revealedJava 8-revealed
Java 8-revealed
Hamed 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 8
Introduction to new features in java 8Introduction to new features in java 8
Introduction to new features in java 8
Raffi Khatchadourian
 
14274730 (1).ppt
14274730 (1).ppt14274730 (1).ppt
14274730 (1).ppt
aptechaligarh
 
Understanding And Using Reflection
Understanding And Using ReflectionUnderstanding And Using Reflection
Understanding And Using ReflectionGanesh Samarthyam
 
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
Syed Awais Mazhar Bukhari
 
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 java2
Techglyphs
 
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
 
Java for Mainframers
Java for MainframersJava for Mainframers
Java for Mainframers
Rich Helton
 

Similar to 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
 

More from New York City College of Technology Computer Systems Technology Colloquium

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
New York City College of Technology Computer Systems Technology Colloquium
 
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...
New York City College of Technology Computer Systems Technology Colloquium
 
Cloud Technology: Virtualization
Cloud Technology: VirtualizationCloud Technology: Virtualization
Google BigTable
Google BigTableGoogle 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 ...
New York City College of Technology Computer Systems Technology Colloquium
 
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
New York City College of Technology Computer Systems Technology Colloquium
 
Static Analysis and Verification of C Programs
Static Analysis and Verification of C ProgramsStatic 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
New York City College of Technology Computer Systems Technology Colloquium
 
Big Data Challenges and Solutions
Big Data Challenges and SolutionsBig Data Challenges and Solutions
Android Apps the Right Way
Android Apps the Right WayAndroid Apps the Right Way
More than Words: Advancing Prosodic Analysis
More than Words: Advancing Prosodic AnalysisMore than Words: Advancing Prosodic Analysis

More from 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
 

Recently uploaded

The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 

Recently uploaded (20)

The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 

Towards Improving Interface Modularity in Legacy Java Software Through Automated Refactoring