Upload
isaac-shaw
View
213
Download
0
Embed Size (px)
Citation preview
Proprietary© 1997
University of Houston-Clear Lake
Software Development
Evolution of Programming LanguagesEvolution of Programming Languages
• Basic cycle of improvement
– Experience software difficulties
– Theory - develop new concepts
– Evaluation - build new languages
• History
– Machine language
– Assembly language
– FORTRAN, COBOL
– Pascal, C, Smalltalk
– Ada, C++, Java
Proprietary© 1997
University of Houston-Clear Lake
Software Development
JavaJava
• Simple
• Object-oriented
• Distributed
• Interpreted
• Robust
• Secure
• Architecture neutral
• Portable
• High performance
• Multi-threaded
• Dynamic language
Proprietary© 1997
University of Houston-Clear Lake
Software Development
Object-Oriented LanguagesObject-Oriented Languages
• Abstraction
• Encapsulation
• Inheritance
• Polymorphism
Proprietary© 1997
University of Houston-Clear Lake
Software Development
AbstractionAbstraction
Real World Object
Abstraction of the Object
ColorPriceOptions
PositionVelocityForces
WidthHeightWeight
Object-oriented
Proprietary© 1997
University of Houston-Clear Lake
Software Development
EncapsulationEncapsulation
Data
Operationsand
Access to object’s data is controlled
Object-oriented
Proprietary© 1997
University of Houston-Clear Lake
Software Development
InheritanceInheritance
Object-oriented
Proprietary© 1997
University of Houston-Clear Lake
Software Development
PolymorphismPolymorphism
• Object-specific operations
• Overloading of method names
“abc” “de” “abcde”
3 4 7 float float float
String String String
Object-oriented
Proprietary© 1997
University of Houston-Clear Lake
Software Development
DistributedDistributed
• High-level support for networking
• URL and other classes from java.net package
• Easy to read a remote file or other resource
• Can invoke remote methods
• Can download and run code from across the Internet
Distributed
Proprietary© 1997
University of Houston-Clear Lake
Software Development
InterpretedInterpreted
• Java compiler generates byte-code for the JVM– the Java Virtual Machine
Interpreted
Java Virtual Machine
Java byte code
Computer XYZ
Proprietary© 1997
University of Houston-Clear Lake
Software Development
Architecture-Neutral and PortableArchitecture-Neutral and Portable
• The Java byte-code is architecture neutral because
it can be executed on any machine that supports
the Java Virtual Machine
• No implementation-dependent aspects to the language
– size of each of the primitive data types is specified
• Few platform dependencies
• Write - Once - Run - Many
Portable
Proprietary© 1997
University of Houston-Clear Lake
Software Development
SimpleSimple
• Number of language constructs has been kept small
• Language is similar to C and C++
• No header files
• No preprocessor
• No struct statement
• No goto statement
• No pointers
• Automatic garbage collection
Simple
A B C
Proprietary© 1997
University of Houston-Clear Lake
Software Development
RobustRobust
• Strongly-typed
• Better compile-time error checking
• No pointer-related bugs
• No memory leaks
• Support for exception handling
• Explicit method declarations are required
• Casts of objects are checked at compile time
Robust
Proprietary© 1997
University of Houston-Clear Lake
Software Development
SecureSecure
• Several layers of security protection to protect
against malicious code
• Pointers cannot be forged
• Memory cannot be accessed beyond the limits of an
array or string’s dimensions
• Byte-code verification prevents stack overflows and
illegal byte-codes
• Sandbox model - applets cannot access local file
system
• Support for digital signatures for untrusted code
Secure
Proprietary© 1997
University of Houston-Clear Lake
Software Development
High-PerformanceHigh-Performance
• Although about 10 times slower than C coded
applications, Java 1.1 is about twice as Java 1.0
• Common operations like string concatenation are in
native code
• Many interpreter systems include just-in-time compilers
to allow code to run faster on a particular CPU
• Faster than many other interpreted languages and than
most scripting languages like Tcl or Perl
High-Performance
Proprietary© 1997
University of Houston-Clear Lake
Software Development
Multi-ThreadedMulti-Threaded
• Multiple threads of execution are possible
• Could have audio file playing, image file downloading,
and graphical animation going on simultaneously
• Java syntax support threads directly with synchronized
keyword
• Can easily start threads, stop threads, and assign
priorities
Multi-Threaded