SlideShare a Scribd company logo
How is Java different from other languages
• Less than you think:
– Java is an imperative language (like C++, Ada, C, Pascal)
– Java is interpreted (like LISP, APL)
– Java is garbage-collected (like LISP, Eiffel, Modula-3)
– Java can be compiled (like LISP)
– Java is object-oriented (like C++, Ada, Eiffel)
• A succesful hybrid for a specific-application domain
• A reasonable general-purpose language for non-real-
time applications
• Work in progress: language evolving rapidly
Original design goals (white paper 1993)
• Simple
• Object-oriented (inheritance, polymorphism)
• Distributed
• Interpreted
• multithreaded
• Robust
• Secure
• Architecture-neutral
• a language with threads, objects, exceptions and
garbage-collection can’t really be simple!
Portability
• Critical concern: write once-run everywhere
• Consequences:
– Portable interpreter
– definition through virtual machine: the JVM
– run-time representation has high-level semantics
– supports dynamic loading
– (+) high-level representation can be queried at run-time to
provide reflection
– (-) Dynamic features make it hard to fully compile, safety
requires numerous run-time checks
Contrast with conventional systems languages
(C, C++, Ada)
• Conventional languages are fully compiled:
– run-time structure is machine language
– minimal run-time type information
– language provides low-level tools for accessing storage
– safety requires fewer run-time checks because compiler
– (least for Ada and somewhat for C++) can verify correctness
statically.
– Languages require static binding, run-time image cannot be
easily modified
– Different compilers may create portability problems
Serious omissions
• No parameterized classes (C++ templates, Ada
generics)
• Can simulate generic programming with untyped
style: casting Object down into specific class.
– Forces code duplication, or run-time conversions
• No operator overloading (syntactic annoyance)
• No enumerations (using final constants is clumsy)
A new construct: interfaces
• Allow otherwise unrelated classes to satisfy a given
requirement
• Orthogonal to inheritance
– inheritance: an A is-a B (has the attributes of a B,
and possibly others)
– interface: an A can-do X (and other unrelated
actions)
– better model for multiple inheritance
• More costly at run-time (minor consideration)
Interface Comparable
public interface Comparable {
public int CompareTo (Object x) throws
ClassCastException;
// returns -1 if this < x,
// 0 if this = x,
// 1 if this > x
};
// Implementation has to cast x to the proper class.
// Any class that may appear in a container should implement
Comparable
Threads and their interface
class Doodler extends Thread {
// override the basic method of a thread
public void run( ) {
... // scribble something
}
} …
Doodler gary = new Doodler ( );
gary.start( ); // calls the run method
The runnable interface allows any object to
have dynamic behavior
class Simple_Gizmo { …}
class Active_Gizmo extends Simple_Gizmo implements
Runnable {
public void run ( ) {…}
}
// a thread can be constructed from anything that runs:
Thread thing1 = new Thread (new Active_Gizmo ( ));
Thread thing2 = new Thread (new Active_Gizmo ( ));
thing1.start( ); thing2.start ( );
Interfaces and event-driven programming
• A high-level model of event-handling:
– graphic objects generate events
• mouse click, menu selection, window close...
– an object can be designated as a handler
• a listener, in Java terminology
– an event can be broadcast to several handlers
• several listeners can be attached to a source of events
– a handler must implement an interface
• actionPerformed, keyPressed, mouseExited..
Built-in interfaces for event handlers
public interface MouseListener
{
void mousePressed (MouseEvent event);
void mouseREleased (MouseEvent event);
void mouseClicked (Mouseevent event);
void mouseEntered (Mouseevent event);
void mouseExited (MouseEvent event);
}
Typically, handler only needs to process a few of the above, and
supply dummy methods for the others
Adapters: a coding convenience
class mouseAdapter implements mouseListener
{
public void mousePressed (MouseEvent event) { } ;
public void mouseREleased (MouseEvent event) { };
public void mouseClicked (Mouseevent event) { };
public void mouseEntered (Mouseevent event) { };
public void mouseExited (MouseEvent event) { };
};
class MouseClickListener extends Mouseadapter {
public void mouseClicked (MouseEvent event {…};
// only the method of interest needs to be supplied
}
Events and listeners
class Calm_Down extends Jframe {
private Jbutton help := new Jbutton (“HELP!!!”);
// indicate that the current frame handles button clicks
help.addActionListener (this);
// if the button is clicked the frame executes the following:
public void actionPerformed (ActionEvent e) {
if (e.getSource () == help) {
System.out.println
(“can’t be that bad. What’s the problem?”);
}
}
}
Event handlers and nested classes
• Inner classes make it possible to add local handlers to any
component
class reactive_panel extends Jpanel { // a swing component
JButton b1;
Public reactive_panel (Container c) {
b1 = new JButton (“flash”);
add (b1);
MyListener ml = new Mylistener ( ) ;
b1.addActionListener (ml);
private class MyListener implements ActionListener {
public void actionPerformed (ActionEvent e) { …}
}
Introspection, reflection, and typeless
programming
public void DoSomething (Object thing) {
// what can be do with a generic object?
if (thing instanceof gizmo) {
// we know the methods in class Gizmo
….
• Instanceof requires an accessible run-time descriptor in the
object.
• Reflection is a general programming model that relies on run-
time representations of aspects of the computation that are
usually not available to the programmer.
• More common in Smalltalk and LISP.
Reflection and metaprogramming
• Given an object at run-time, it is possible to obtain:
– its class
– its fields (data members) as strings
– the classes of its fields
– the methods of its class, as strings
– the types of the methods
• It is then possible to construct calls to these methods
• This is possible because the JVM provides a high-
level representation of a class, with embedded
strings that allow almost complete disassembly.
Reflection classes
• java.lang.Class
– Class.getMethods () returns array of method objects
– Class.getConstructor (Class[ ] parameterTypes)
• returns the constructor with those parameters
• java.lang.reflect.Array
– Array.NewInstance (Class componentType, int length)
• java.lang.reflect.Field
• java.lang.reflect.Method
• All of the above require the existence of run-time
objects that describe methods and classes
Reflection and Beans
• The beans technology requires run-time examination
of foreign objects, in order to build dynamically a
usable interface for them.
• Class Introspector builds a method dictionary based
on simple naming conventions:
public boolean isCoffeeBean ( ); // is... predicate
public int getRoast ( ); // get... retrieval
public void setRoast (int darkness) ; // set… assignment
An endless supply of libraries
• The power of the language is in the large set of
libraries in existence. The language is successful if
programmers find libraries confortable:
• JFC and the Swing package
• Pluggable look and Feel
• Graphics
• Files and Streams
• Networking
• Enterprise libraries: CORBA, RMI, Serialization,
JDBC
Ad

More Related Content

What's hot (17)

From DOT to Dotty
From DOT to DottyFrom DOT to Dotty
From DOT to Dotty
Martin Odersky
 
20160520 what youneedtoknowaboutlambdas
20160520 what youneedtoknowaboutlambdas20160520 what youneedtoknowaboutlambdas
20160520 what youneedtoknowaboutlambdas
shinolajla
 
Scala, Play 2.0 & Cloud Foundry
Scala, Play 2.0 & Cloud FoundryScala, Play 2.0 & Cloud Foundry
Scala, Play 2.0 & Cloud Foundry
Pray Desai
 
Core java complete ppt(note)
Core java  complete  ppt(note)Core java  complete  ppt(note)
Core java complete ppt(note)
arvind pandey
 
Scala Intro
Scala IntroScala Intro
Scala Intro
Alexey (Mr_Mig) Migutsky
 
2CPP04 - Objects and Classes
2CPP04 - Objects and Classes2CPP04 - Objects and Classes
2CPP04 - Objects and Classes
Michael Heron
 
Scala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentationScala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentation
Martin Odersky
 
Clojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp ProgrammersClojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp Programmers
elliando dias
 
Scala basic
Scala basicScala basic
Scala basic
Nguyen Tuan
 
Practical type mining in Scala
Practical type mining in ScalaPractical type mining in Scala
Practical type mining in Scala
Rose Toomey
 
Core java
Core javaCore java
Core java
kasaragaddaslide
 
Functional Programming In Practice
Functional Programming In PracticeFunctional Programming In Practice
Functional Programming In Practice
Michiel Borkent
 
flatMap Oslo presentation slides
flatMap Oslo presentation slidesflatMap Oslo presentation slides
flatMap Oslo presentation slides
Martin Odersky
 
Clojure talk at Münster JUG
Clojure talk at Münster JUGClojure talk at Münster JUG
Clojure talk at Münster JUG
Alex Ott
 
C++ overview
C++ overviewC++ overview
C++ overview
Prem Ranjan
 
Implementing Higher-Kinded Types in Dotty
Implementing Higher-Kinded Types in DottyImplementing Higher-Kinded Types in Dotty
Implementing Higher-Kinded Types in Dotty
Martin Odersky
 
camel-scala.pdf
camel-scala.pdfcamel-scala.pdf
camel-scala.pdf
Hiroshi Ono
 
20160520 what youneedtoknowaboutlambdas
20160520 what youneedtoknowaboutlambdas20160520 what youneedtoknowaboutlambdas
20160520 what youneedtoknowaboutlambdas
shinolajla
 
Scala, Play 2.0 & Cloud Foundry
Scala, Play 2.0 & Cloud FoundryScala, Play 2.0 & Cloud Foundry
Scala, Play 2.0 & Cloud Foundry
Pray Desai
 
Core java complete ppt(note)
Core java  complete  ppt(note)Core java  complete  ppt(note)
Core java complete ppt(note)
arvind pandey
 
2CPP04 - Objects and Classes
2CPP04 - Objects and Classes2CPP04 - Objects and Classes
2CPP04 - Objects and Classes
Michael Heron
 
Scala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentationScala - The Simple Parts, SFScala presentation
Scala - The Simple Parts, SFScala presentation
Martin Odersky
 
Clojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp ProgrammersClojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp Programmers
elliando dias
 
Practical type mining in Scala
Practical type mining in ScalaPractical type mining in Scala
Practical type mining in Scala
Rose Toomey
 
Functional Programming In Practice
Functional Programming In PracticeFunctional Programming In Practice
Functional Programming In Practice
Michiel Borkent
 
flatMap Oslo presentation slides
flatMap Oslo presentation slidesflatMap Oslo presentation slides
flatMap Oslo presentation slides
Martin Odersky
 
Clojure talk at Münster JUG
Clojure talk at Münster JUGClojure talk at Münster JUG
Clojure talk at Münster JUG
Alex Ott
 
Implementing Higher-Kinded Types in Dotty
Implementing Higher-Kinded Types in DottyImplementing Higher-Kinded Types in Dotty
Implementing Higher-Kinded Types in Dotty
Martin Odersky
 

Similar to Basic info on java intro (20)

Java-Intro.pptx
Java-Intro.pptxJava-Intro.pptx
Java-Intro.pptx
VijalJain3
 
Short intro to scala and the play framework
Short intro to scala and the play frameworkShort intro to scala and the play framework
Short intro to scala and the play framework
Felipe
 
Aggregate Programming in Scala
Aggregate Programming in ScalaAggregate Programming in Scala
Aggregate Programming in Scala
Roberto Casadei
 
Functional Programming In Jdk8
Functional Programming In Jdk8 Functional Programming In Jdk8
Functional Programming In Jdk8
Bansilal Haudakari
 
oop unit1.pptx
oop unit1.pptxoop unit1.pptx
oop unit1.pptx
sureshkumara29
 
CS8392 OOP
CS8392 OOPCS8392 OOP
CS8392 OOP
DhanalakshmiVelusamy1
 
Scala Introduction
Scala IntroductionScala Introduction
Scala Introduction
Adrian Spender
 
Beginning Java for .NET developers
Beginning Java for .NET developersBeginning Java for .NET developers
Beginning Java for .NET developers
Andrei Rinea
 
Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!
Ortus Solutions, Corp
 
Java1 in mumbai
Java1 in mumbaiJava1 in mumbai
Java1 in mumbai
vibrantuser
 
Java For beginners and CSIT and IT students
Java  For beginners and CSIT and IT studentsJava  For beginners and CSIT and IT students
Java For beginners and CSIT and IT students
Partnered Health
 
Jslab rssh: JS as language platform
Jslab rssh:  JS as language platformJslab rssh:  JS as language platform
Jslab rssh: JS as language platform
Ruslan Shevchenko
 
JSLab.Руслан Шевченко."JavaScript как платформа компиляции"
JSLab.Руслан Шевченко."JavaScript как платформа компиляции"JSLab.Руслан Шевченко."JavaScript как платформа компиляции"
JSLab.Руслан Шевченко."JavaScript как платформа компиляции"
GeeksLab Odessa
 
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Nayden Gochev
 
basic_java.ppt
basic_java.pptbasic_java.ppt
basic_java.ppt
sujatha629799
 
C# for Java Developers
C# for Java DevelopersC# for Java Developers
C# for Java Developers
Jussi Pohjolainen
 
Developer’s viewpoint on swift programming language
Developer’s viewpoint on swift programming languageDeveloper’s viewpoint on swift programming language
Developer’s viewpoint on swift programming language
Azilen Technologies Pvt. Ltd.
 
Multi-threading in the modern era: Vertx Akka and Quasar
Multi-threading in the modern era: Vertx Akka and QuasarMulti-threading in the modern era: Vertx Akka and Quasar
Multi-threading in the modern era: Vertx Akka and Quasar
Gal Marder
 
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtug
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtugVk.amberfog.com gtug part1_introduction2_javaandroid_gtug
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtug
ketan_patel25
 
scalaliftoff2009.pdf
scalaliftoff2009.pdfscalaliftoff2009.pdf
scalaliftoff2009.pdf
Hiroshi Ono
 
Java-Intro.pptx
Java-Intro.pptxJava-Intro.pptx
Java-Intro.pptx
VijalJain3
 
Short intro to scala and the play framework
Short intro to scala and the play frameworkShort intro to scala and the play framework
Short intro to scala and the play framework
Felipe
 
Aggregate Programming in Scala
Aggregate Programming in ScalaAggregate Programming in Scala
Aggregate Programming in Scala
Roberto Casadei
 
Functional Programming In Jdk8
Functional Programming In Jdk8 Functional Programming In Jdk8
Functional Programming In Jdk8
Bansilal Haudakari
 
Beginning Java for .NET developers
Beginning Java for .NET developersBeginning Java for .NET developers
Beginning Java for .NET developers
Andrei Rinea
 
Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!
Ortus Solutions, Corp
 
Java For beginners and CSIT and IT students
Java  For beginners and CSIT and IT studentsJava  For beginners and CSIT and IT students
Java For beginners and CSIT and IT students
Partnered Health
 
Jslab rssh: JS as language platform
Jslab rssh:  JS as language platformJslab rssh:  JS as language platform
Jslab rssh: JS as language platform
Ruslan Shevchenko
 
JSLab.Руслан Шевченко."JavaScript как платформа компиляции"
JSLab.Руслан Шевченко."JavaScript как платформа компиляции"JSLab.Руслан Шевченко."JavaScript как платформа компиляции"
JSLab.Руслан Шевченко."JavaScript как платформа компиляции"
GeeksLab Odessa
 
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Lecture from javaday.bg by Nayden Gochev/ Ivan Ivanov and Mitia Alexandrov
Nayden Gochev
 
Developer’s viewpoint on swift programming language
Developer’s viewpoint on swift programming languageDeveloper’s viewpoint on swift programming language
Developer’s viewpoint on swift programming language
Azilen Technologies Pvt. Ltd.
 
Multi-threading in the modern era: Vertx Akka and Quasar
Multi-threading in the modern era: Vertx Akka and QuasarMulti-threading in the modern era: Vertx Akka and Quasar
Multi-threading in the modern era: Vertx Akka and Quasar
Gal Marder
 
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtug
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtugVk.amberfog.com gtug part1_introduction2_javaandroid_gtug
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtug
ketan_patel25
 
scalaliftoff2009.pdf
scalaliftoff2009.pdfscalaliftoff2009.pdf
scalaliftoff2009.pdf
Hiroshi Ono
 
Ad

More from kabirmahlotra (7)

Top 10 sales trends for 2015 hbr
Top 10 sales trends for 2015   hbrTop 10 sales trends for 2015   hbr
Top 10 sales trends for 2015 hbr
kabirmahlotra
 
Basic info on java intro
Basic info on java introBasic info on java intro
Basic info on java intro
kabirmahlotra
 
Pert -cpm
Pert  -cpmPert  -cpm
Pert -cpm
kabirmahlotra
 
Some presentation
Some presentationSome presentation
Some presentation
kabirmahlotra
 
Pert -cpm
Pert  -cpmPert  -cpm
Pert -cpm
kabirmahlotra
 
Culture9 info
Culture9 infoCulture9 info
Culture9 info
kabirmahlotra
 
Chapter 1 introduction
Chapter 1 introductionChapter 1 introduction
Chapter 1 introduction
kabirmahlotra
 
Ad

Recently uploaded (20)

Uses of drones in civil construction.pdf
Uses of drones in civil construction.pdfUses of drones in civil construction.pdf
Uses of drones in civil construction.pdf
surajsen1729
 
Frontend Architecture Diagram/Guide For Frontend Engineers
Frontend Architecture Diagram/Guide For Frontend EngineersFrontend Architecture Diagram/Guide For Frontend Engineers
Frontend Architecture Diagram/Guide For Frontend Engineers
Michael Hertzberg
 
Water Industry Process Automation & Control Monthly May 2025
Water Industry Process Automation & Control Monthly May 2025Water Industry Process Automation & Control Monthly May 2025
Water Industry Process Automation & Control Monthly May 2025
Water Industry Process Automation & Control
 
Nanometer Metal-Organic-Framework Literature Comparison
Nanometer Metal-Organic-Framework  Literature ComparisonNanometer Metal-Organic-Framework  Literature Comparison
Nanometer Metal-Organic-Framework Literature Comparison
Chris Harding
 
sss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptx
sss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptx
sss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptx
ajayrm685
 
SICPA: Fabien Keller - background introduction
SICPA: Fabien Keller - background introductionSICPA: Fabien Keller - background introduction
SICPA: Fabien Keller - background introduction
fabienklr
 
ML_Unit_VI_DEEP LEARNING_Introduction to ANN.pdf
ML_Unit_VI_DEEP LEARNING_Introduction to ANN.pdfML_Unit_VI_DEEP LEARNING_Introduction to ANN.pdf
ML_Unit_VI_DEEP LEARNING_Introduction to ANN.pdf
rameshwarchintamani
 
introduction technology technology tec.pptx
introduction technology technology tec.pptxintroduction technology technology tec.pptx
introduction technology technology tec.pptx
Iftikhar70
 
Machine foundation notes for civil engineering students
Machine foundation notes for civil engineering studentsMachine foundation notes for civil engineering students
Machine foundation notes for civil engineering students
DYPCET
 
Machine Learning basics POWERPOINT PRESENETATION
Machine Learning basics POWERPOINT PRESENETATIONMachine Learning basics POWERPOINT PRESENETATION
Machine Learning basics POWERPOINT PRESENETATION
DarrinBright1
 
Empowering Electric Vehicle Charging Infrastructure with Renewable Energy Int...
Empowering Electric Vehicle Charging Infrastructure with Renewable Energy Int...Empowering Electric Vehicle Charging Infrastructure with Renewable Energy Int...
Empowering Electric Vehicle Charging Infrastructure with Renewable Energy Int...
AI Publications
 
01.คุณลักษณะเฉพาะของอุปกรณ์_pagenumber.pdf
01.คุณลักษณะเฉพาะของอุปกรณ์_pagenumber.pdf01.คุณลักษณะเฉพาะของอุปกรณ์_pagenumber.pdf
01.คุณลักษณะเฉพาะของอุปกรณ์_pagenumber.pdf
PawachMetharattanara
 
Control Methods of Noise Pollutions.pptx
Control Methods of Noise Pollutions.pptxControl Methods of Noise Pollutions.pptx
Control Methods of Noise Pollutions.pptx
vvsasane
 
ATAL 6 Days Online FDP Scheme Document 2025-26.pdf
ATAL 6 Days Online FDP Scheme Document 2025-26.pdfATAL 6 Days Online FDP Scheme Document 2025-26.pdf
ATAL 6 Days Online FDP Scheme Document 2025-26.pdf
ssuserda39791
 
Slide share PPT of NOx control technologies.pptx
Slide share PPT of  NOx control technologies.pptxSlide share PPT of  NOx control technologies.pptx
Slide share PPT of NOx control technologies.pptx
vvsasane
 
DED KOMINFO detail engginering design gedung
DED KOMINFO detail engginering design gedungDED KOMINFO detail engginering design gedung
DED KOMINFO detail engginering design gedung
nabilarizqifadhilah1
 
Mode-Wise Corridor Level Travel-Time Estimation Using Machine Learning Models
Mode-Wise Corridor Level Travel-Time Estimation Using Machine Learning ModelsMode-Wise Corridor Level Travel-Time Estimation Using Machine Learning Models
Mode-Wise Corridor Level Travel-Time Estimation Using Machine Learning Models
Journal of Soft Computing in Civil Engineering
 
Evonik Overview Visiomer Specialty Methacrylates.pdf
Evonik Overview Visiomer Specialty Methacrylates.pdfEvonik Overview Visiomer Specialty Methacrylates.pdf
Evonik Overview Visiomer Specialty Methacrylates.pdf
szhang13
 
Transport modelling at SBB, presentation at EPFL in 2025
Transport modelling at SBB, presentation at EPFL in 2025Transport modelling at SBB, presentation at EPFL in 2025
Transport modelling at SBB, presentation at EPFL in 2025
Antonin Danalet
 
Using the Artificial Neural Network to Predict the Axial Strength and Strain ...
Using the Artificial Neural Network to Predict the Axial Strength and Strain ...Using the Artificial Neural Network to Predict the Axial Strength and Strain ...
Using the Artificial Neural Network to Predict the Axial Strength and Strain ...
Journal of Soft Computing in Civil Engineering
 
Uses of drones in civil construction.pdf
Uses of drones in civil construction.pdfUses of drones in civil construction.pdf
Uses of drones in civil construction.pdf
surajsen1729
 
Frontend Architecture Diagram/Guide For Frontend Engineers
Frontend Architecture Diagram/Guide For Frontend EngineersFrontend Architecture Diagram/Guide For Frontend Engineers
Frontend Architecture Diagram/Guide For Frontend Engineers
Michael Hertzberg
 
Nanometer Metal-Organic-Framework Literature Comparison
Nanometer Metal-Organic-Framework  Literature ComparisonNanometer Metal-Organic-Framework  Literature Comparison
Nanometer Metal-Organic-Framework Literature Comparison
Chris Harding
 
sss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptx
sss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptx
sss1.pptxsss1.pptxsss1.pptxsss1.pptxsss1.pptx
ajayrm685
 
SICPA: Fabien Keller - background introduction
SICPA: Fabien Keller - background introductionSICPA: Fabien Keller - background introduction
SICPA: Fabien Keller - background introduction
fabienklr
 
ML_Unit_VI_DEEP LEARNING_Introduction to ANN.pdf
ML_Unit_VI_DEEP LEARNING_Introduction to ANN.pdfML_Unit_VI_DEEP LEARNING_Introduction to ANN.pdf
ML_Unit_VI_DEEP LEARNING_Introduction to ANN.pdf
rameshwarchintamani
 
introduction technology technology tec.pptx
introduction technology technology tec.pptxintroduction technology technology tec.pptx
introduction technology technology tec.pptx
Iftikhar70
 
Machine foundation notes for civil engineering students
Machine foundation notes for civil engineering studentsMachine foundation notes for civil engineering students
Machine foundation notes for civil engineering students
DYPCET
 
Machine Learning basics POWERPOINT PRESENETATION
Machine Learning basics POWERPOINT PRESENETATIONMachine Learning basics POWERPOINT PRESENETATION
Machine Learning basics POWERPOINT PRESENETATION
DarrinBright1
 
Empowering Electric Vehicle Charging Infrastructure with Renewable Energy Int...
Empowering Electric Vehicle Charging Infrastructure with Renewable Energy Int...Empowering Electric Vehicle Charging Infrastructure with Renewable Energy Int...
Empowering Electric Vehicle Charging Infrastructure with Renewable Energy Int...
AI Publications
 
01.คุณลักษณะเฉพาะของอุปกรณ์_pagenumber.pdf
01.คุณลักษณะเฉพาะของอุปกรณ์_pagenumber.pdf01.คุณลักษณะเฉพาะของอุปกรณ์_pagenumber.pdf
01.คุณลักษณะเฉพาะของอุปกรณ์_pagenumber.pdf
PawachMetharattanara
 
Control Methods of Noise Pollutions.pptx
Control Methods of Noise Pollutions.pptxControl Methods of Noise Pollutions.pptx
Control Methods of Noise Pollutions.pptx
vvsasane
 
ATAL 6 Days Online FDP Scheme Document 2025-26.pdf
ATAL 6 Days Online FDP Scheme Document 2025-26.pdfATAL 6 Days Online FDP Scheme Document 2025-26.pdf
ATAL 6 Days Online FDP Scheme Document 2025-26.pdf
ssuserda39791
 
Slide share PPT of NOx control technologies.pptx
Slide share PPT of  NOx control technologies.pptxSlide share PPT of  NOx control technologies.pptx
Slide share PPT of NOx control technologies.pptx
vvsasane
 
DED KOMINFO detail engginering design gedung
DED KOMINFO detail engginering design gedungDED KOMINFO detail engginering design gedung
DED KOMINFO detail engginering design gedung
nabilarizqifadhilah1
 
Evonik Overview Visiomer Specialty Methacrylates.pdf
Evonik Overview Visiomer Specialty Methacrylates.pdfEvonik Overview Visiomer Specialty Methacrylates.pdf
Evonik Overview Visiomer Specialty Methacrylates.pdf
szhang13
 
Transport modelling at SBB, presentation at EPFL in 2025
Transport modelling at SBB, presentation at EPFL in 2025Transport modelling at SBB, presentation at EPFL in 2025
Transport modelling at SBB, presentation at EPFL in 2025
Antonin Danalet
 

Basic info on java intro

  • 1. How is Java different from other languages • Less than you think: – Java is an imperative language (like C++, Ada, C, Pascal) – Java is interpreted (like LISP, APL) – Java is garbage-collected (like LISP, Eiffel, Modula-3) – Java can be compiled (like LISP) – Java is object-oriented (like C++, Ada, Eiffel) • A succesful hybrid for a specific-application domain • A reasonable general-purpose language for non-real- time applications • Work in progress: language evolving rapidly
  • 2. Original design goals (white paper 1993) • Simple • Object-oriented (inheritance, polymorphism) • Distributed • Interpreted • multithreaded • Robust • Secure • Architecture-neutral • a language with threads, objects, exceptions and garbage-collection can’t really be simple!
  • 3. Portability • Critical concern: write once-run everywhere • Consequences: – Portable interpreter – definition through virtual machine: the JVM – run-time representation has high-level semantics – supports dynamic loading – (+) high-level representation can be queried at run-time to provide reflection – (-) Dynamic features make it hard to fully compile, safety requires numerous run-time checks
  • 4. Contrast with conventional systems languages (C, C++, Ada) • Conventional languages are fully compiled: – run-time structure is machine language – minimal run-time type information – language provides low-level tools for accessing storage – safety requires fewer run-time checks because compiler – (least for Ada and somewhat for C++) can verify correctness statically. – Languages require static binding, run-time image cannot be easily modified – Different compilers may create portability problems
  • 5. Serious omissions • No parameterized classes (C++ templates, Ada generics) • Can simulate generic programming with untyped style: casting Object down into specific class. – Forces code duplication, or run-time conversions • No operator overloading (syntactic annoyance) • No enumerations (using final constants is clumsy)
  • 6. A new construct: interfaces • Allow otherwise unrelated classes to satisfy a given requirement • Orthogonal to inheritance – inheritance: an A is-a B (has the attributes of a B, and possibly others) – interface: an A can-do X (and other unrelated actions) – better model for multiple inheritance • More costly at run-time (minor consideration)
  • 7. Interface Comparable public interface Comparable { public int CompareTo (Object x) throws ClassCastException; // returns -1 if this < x, // 0 if this = x, // 1 if this > x }; // Implementation has to cast x to the proper class. // Any class that may appear in a container should implement Comparable
  • 8. Threads and their interface class Doodler extends Thread { // override the basic method of a thread public void run( ) { ... // scribble something } } … Doodler gary = new Doodler ( ); gary.start( ); // calls the run method
  • 9. The runnable interface allows any object to have dynamic behavior class Simple_Gizmo { …} class Active_Gizmo extends Simple_Gizmo implements Runnable { public void run ( ) {…} } // a thread can be constructed from anything that runs: Thread thing1 = new Thread (new Active_Gizmo ( )); Thread thing2 = new Thread (new Active_Gizmo ( )); thing1.start( ); thing2.start ( );
  • 10. Interfaces and event-driven programming • A high-level model of event-handling: – graphic objects generate events • mouse click, menu selection, window close... – an object can be designated as a handler • a listener, in Java terminology – an event can be broadcast to several handlers • several listeners can be attached to a source of events – a handler must implement an interface • actionPerformed, keyPressed, mouseExited..
  • 11. Built-in interfaces for event handlers public interface MouseListener { void mousePressed (MouseEvent event); void mouseREleased (MouseEvent event); void mouseClicked (Mouseevent event); void mouseEntered (Mouseevent event); void mouseExited (MouseEvent event); } Typically, handler only needs to process a few of the above, and supply dummy methods for the others
  • 12. Adapters: a coding convenience class mouseAdapter implements mouseListener { public void mousePressed (MouseEvent event) { } ; public void mouseREleased (MouseEvent event) { }; public void mouseClicked (Mouseevent event) { }; public void mouseEntered (Mouseevent event) { }; public void mouseExited (MouseEvent event) { }; }; class MouseClickListener extends Mouseadapter { public void mouseClicked (MouseEvent event {…}; // only the method of interest needs to be supplied }
  • 13. Events and listeners class Calm_Down extends Jframe { private Jbutton help := new Jbutton (“HELP!!!”); // indicate that the current frame handles button clicks help.addActionListener (this); // if the button is clicked the frame executes the following: public void actionPerformed (ActionEvent e) { if (e.getSource () == help) { System.out.println (“can’t be that bad. What’s the problem?”); } } }
  • 14. Event handlers and nested classes • Inner classes make it possible to add local handlers to any component class reactive_panel extends Jpanel { // a swing component JButton b1; Public reactive_panel (Container c) { b1 = new JButton (“flash”); add (b1); MyListener ml = new Mylistener ( ) ; b1.addActionListener (ml); private class MyListener implements ActionListener { public void actionPerformed (ActionEvent e) { …} }
  • 15. Introspection, reflection, and typeless programming public void DoSomething (Object thing) { // what can be do with a generic object? if (thing instanceof gizmo) { // we know the methods in class Gizmo …. • Instanceof requires an accessible run-time descriptor in the object. • Reflection is a general programming model that relies on run- time representations of aspects of the computation that are usually not available to the programmer. • More common in Smalltalk and LISP.
  • 16. Reflection and metaprogramming • Given an object at run-time, it is possible to obtain: – its class – its fields (data members) as strings – the classes of its fields – the methods of its class, as strings – the types of the methods • It is then possible to construct calls to these methods • This is possible because the JVM provides a high- level representation of a class, with embedded strings that allow almost complete disassembly.
  • 17. Reflection classes • java.lang.Class – Class.getMethods () returns array of method objects – Class.getConstructor (Class[ ] parameterTypes) • returns the constructor with those parameters • java.lang.reflect.Array – Array.NewInstance (Class componentType, int length) • java.lang.reflect.Field • java.lang.reflect.Method • All of the above require the existence of run-time objects that describe methods and classes
  • 18. Reflection and Beans • The beans technology requires run-time examination of foreign objects, in order to build dynamically a usable interface for them. • Class Introspector builds a method dictionary based on simple naming conventions: public boolean isCoffeeBean ( ); // is... predicate public int getRoast ( ); // get... retrieval public void setRoast (int darkness) ; // set… assignment
  • 19. An endless supply of libraries • The power of the language is in the large set of libraries in existence. The language is successful if programmers find libraries confortable: • JFC and the Swing package • Pluggable look and Feel • Graphics • Files and Streams • Networking • Enterprise libraries: CORBA, RMI, Serialization, JDBC
  翻译: