2016W CT06 DotNET und Java

Werbung
Komponententechnologien
Winter2016/17
6. JAVA UND .NET
PETER STURM
GITHUB (23.11.2014)
900000
800000
700000
600000
500000
400000
300000
200000
100000
0
©PeterSturm,UniversitätTrier
Java
C#
C
C++
Swift
1
Komponententechnologien
Winter2016/17
TIOBE (NOVEMBER 2014)
MANAGED
©PeterSturm,UniversitätTrier
2
Komponententechnologien
Winter2016/17
JAVA 1
1995
Write Once, Run Anywhere (WORA)
Kostenlos
Java Applets
©PeterSturm,UniversitätTrier
3
Komponententechnologien
Winter2016/17
JAVA 1
1995
JAVA 1.1
1997
JavaBeans
Reflection
RMI
De facto Standard (ECMA-Versuch)
JAVA 1
1995
JAVA 1.1
JAVA 1.2
1997
1998
Enterprise Beans (J2EE)
J2ME
Collections
IDL
©PeterSturm,UniversitätTrier
4
Komponententechnologien
Winter2016/17
JAVA 1
Neue JVM
RMI für CORBA
JNDI
1995
JAVA 1.3
2000
JAVA 1.1
JAVA 1.2
1997
1998
regexp
Non-Blocking IO
XML, XSLT
Web Start
.NET 1.0
JAVA 1.42002
2002
JAVA 1
1995
JAVA 1.3
2000
JAVA 1.1
JAVA 1.2
1997
1998
©PeterSturm,UniversitätTrier
5
Komponententechnologien
Winter2016/17
.NET 1.1
2003
.NET 1.0
ASP.NET (mobil)
.NET Compact Framework
Generics
Attribute
JAVA 1.42002
2002
JAVA 1
1995
JAVA 1.3
2000
JAVA 1.1
1997
JAVA 1.2
1998
.NET 1.1
2003
JAVA 5
.NET 1.0
2004
JAVA 1.42002
2002
JAVA 1
1995
JAVA 1.3
2000
JAVA 1.1
JAVA 1.2
1998
©PeterSturm,UniversitätTrier
1997
Generics
Attribute
Automatische StubGenerierung
Concurrency (Tasks,
Collections, Atomic
Variables)
Synchronizer (Mutex,
Semaphor, Barrier, ...)
6
Komponententechnologien
Winter2016/17
.NET 1.1
2003
JAVA 5
.NET 1.0
2004
JAVA 1.42002
2002
.NET 2.0
JAVA 1
2005
1995
JAVA 1.3
2000
JAVA 1.1
1997
JAVA 1.2
1998
64 Bit
SQL Server Integration
Micro Framework
Anonyme Funktionen
Partielle Klassen
CLR versteht Generics
.NET 1.1
2003
JAVA 5
.NET 1.0
2004
JAVA 1.42002
2002
.NET 2.0
JAVA 1
JAVA 1.3
2000
JAVA 1.1
JAVA 1.2
1998
©PeterSturm,UniversitätTrier
2005
1995
1997
JAVA 6
2006
Support für Script-Sprachen in JVM
JAX-WS (WebServices)
7
Komponententechnologien
Winter2016/17
.NET 1.1
2003
JAVA 5
.NET 1.0
2004
JAVA 1.42002
2002
.NET 2.0
JAVA 1
2005
1995
JAVA 1.3
2000
JAVA 1.1
JAVA 6
1997
JAVA 1.2
2006
1998
.NET 3.0
2006
XAML, WPF, WCF, WWF
.NET 1.1
2003
JAVA 5
.NET 1.0
2004
JAVA 1.42002
2002
.NET 2.0
JAVA 1
2005
1995
JAVA 1.3
2000
JAVA 1.1
JAVA 1.2
JAVA 6
1997
2006
1998
.NET 3.0
.NET 3.5
2006
2007
LINQ
©PeterSturm,UniversitätTrier
8
Komponententechnologien
Winter2016/17
.NET 1.1
2003
JVM unterstützt
dynamische Sprachen
Concurrency
(geplant) Lambdas
JAVA 5
.NET 1.0
2004
JAVA 1.42002
2002
2000
2011
JAVA 1.1
JAVA 6
1997
JAVA 1.2
.NET 4
2005
1995
JAVA 1.3
JAVA 7
.NET 2.0
JAVA 1
2006
1998
2010
.NET 3.0
2006
.NET 3.5
2007
.NET 1.1
Metro
Async
HTML5
.NET 4.5
2012
2003
JAVA 5
.NET 1.0
2004
JAVA 1.42002
2002
.NET 2.0
JAVA 1
JAVA 1.3
JAVA 7
2000
2011
.NET 4
2010
2005
1995
JAVA 1.1
JAVA 1.2
JAVA 6
1997
2006
1998
.NET 3.0
.NET 3.5
2006
2007
©PeterSturm,UniversitätTrier
9
Komponententechnologien
Winter2016/17
Lambdas
JavaScript Runtime Teil der Anwendung (Projekt Nashorn)
Annotationen auf Typeben
Neues JavaFX (3D Graphik, Sensoren)
.NET 1.1
JAVA 8
2003
2014
JAVA 5
.NET 1.0
2004
JAVA 1.42002
.NET 4.5
2002
2012
.NET 2.0
JAVA 1
JAVA 1.3
JAVA 7
2000
2011
JAVA 1.1
JAVA 6
1997
JAVA 1.2
.NET 4
2005
1995
2006
1998
2010
.NET 3.0
2006
.NET 3.5
2007
.NET 5.0
2015?
Swift
2014
.NET 1.1
JAVA 8
2003
2014
JAVA 5
.NET 1.0
.NET 4.5
2012
2004
JAVA 1.42002
2002
.NET 2.0
JAVA 1
JAVA 1.3
JAVA 7
2000
2011
.NET 4
2010
2005
1995
JAVA 1.1
JAVA 1.2
JAVA 6
1997
2006
1998
.NET 3.0
.NET 3.5
2006
2007
©PeterSturm,UniversitätTrier
10
Komponententechnologien
©PeterSturm,UniversitätTrier
Winter2016/17
11
Komponententechnologien
Winter2016/17
SYNTACTICAL SUGAR
• Automatic Properties
• Extension Methods
• LINQ und mehr
• Implizite Variablentypen (var)
ZEITGEIST
• Wachsende Bedeutung von XML
• Integration relevanter Bibliotheken (Serialisierung, u.a.)
• Webservices
• XAML -> WCF, WPF und WWF
• Attribut-orientierte Programmierung
• Generische Programmierung
• Dynamische statt statische Resolution
• Typsicherheit gegen Flexibilität
24
©PeterSturm,UniversitätTrier
12
Komponententechnologien
Winter2016/17
LAMBDA CALCULUS
• Alonzo Church
• 1930-40 „Foundations of mathematics“
• Anonyme Funktionen
• Nicht: sqrsum(x,y) = x*x + y*y
• Sondern: (x,y) -> x*x + y*y
• Nur ein Argument
• (x) -> ((y) -> x*x + y*y) (Currying)
• Funktionen sind mögliche Werte
©PeterSturm,UniversitätTrier
13
Komponententechnologien
Winter2016/17
C / C++
©PeterSturm,UniversitätTrier
14
Komponententechnologien
Winter2016/17
• C++11
• Sprachkern
• Vielfältige Sprachdetails
• Implizite Typen (auto)
• Anonyme Funktionen (Lambdas)
• Garbage Collected Implementierungen
• Attribute
• Standardbibliothek
• Threading
• Tuples, Hash Tables, Reguläre Ausdrücke
• C++14 = Kleine Erweiterung von C++11
• Impliziter Returntyp (auto)
• Generische Lambdas
©PeterSturm,UniversitätTrier
15
Komponententechnologien
Winter2016/17
http://msdn.microsoft.com/en-us/library/hh279654.aspx
C++ EVOLUTION
.NET 5.0
2015?
Swift
2014
.NET 1.1
JAVA 8
2003
2014
JAVA 5
.NET 1.0
.NET 4.5
2012
2004
JAVA 1.42002
2002
.NET 2.0
JAVA 1
JAVA 7
2011
C++11
2011
.NET 4
2010
2005
1995
JAVA 1.3
2000
JAVA 1.1
JAVA 1.2
JAVA 6
1997
2006
1998
.NET 3.0
.NET 3.5
2006
2007
©PeterSturm,UniversitätTrier
16
Herunterladen