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