delphi xe2, door andré mussche op de 4dotnet developers day

20
Delphi XE2 "Biggest and best release” André Mussche 6 oktober 2011 DTS b.v

Upload: hanneke-dotnet

Post on 18-Nov-2014

874 views

Category:

Technology


1 download

DESCRIPTION

Delphi XE2, door André Mussche op de 4DotNet Developers Day

TRANSCRIPT

Page 1: Delphi XE2, door André Mussche op de 4DotNet Developers Day

Delphi XE2"Biggest and best release”

André Mussche6 oktober 2011

DTS b.v

Page 2: Delphi XE2, door André Mussche op de 4DotNet Developers Day

Inhoud● Delphi XE2

• 64-bit • FireMonkey GUI• Mac OS X én iOS • Unit ScopeNames• VCL styles• LiveBindings• Datasnap, RTTI • IDE, 3rd party

● Demos● Toekomst● Vragen

Page 3: Delphi XE2, door André Mussche op de 4DotNet Developers Day

64 bit (Windows)

“It just works” :-) Delphi IDE zelf nog 32bit

debugger (apart proces) wel 64bit Eenvoudige migratie (makkelijker dan Unicode)

vooral bij “nette” code (weinig low level pointer en assembly trucs)

Vooral principieel, niet perse nodig (?) Nog niet uitgeoptimaliseerd

(soms even snel of wat trager dan 32bit Delphi) eerst een werkende versie.

Page 4: Delphi XE2, door André Mussche op de 4DotNet Developers Day

64 bit (Windows)(2)

● Onderwater 64bit flink anders: • Calling conventions (geen stdcall, register, cdecl) oa bij dll’s• Exception handling anders, geen try...except penalty• Niet perse sneller, wel meer registers• Floating point wel stuk sneller dmv SSE2, etc

● Data types:• Integer = Int32, 4 bytes• NativeInt, NativeUnt = 

O Int64 + UInt64 (64bit), O Int32 + Cardinal (32bit)

• Pointer: O 8 bytes (64bit)O 4 bytes (32bit)

Page 5: Delphi XE2, door André Mussche op de 4DotNet Developers Day

Firemonkey

● Vertor based GUI framework • zoals WPF & Adobe AIR, maar dan RAD (eenvoudig)• voorheen VgScene/DxScene

● Hardware accelarated, 2D & 3D, transparency, anti aliased, etc● Lage CPU belasting, snelle GUI

• geen flikkering meer (Windows API: VCL, WinForms, etc)● Cross-platform, met abstractie lagen:

• 2D: GDI, GDI+ (WinXp), Direct2D (Vista+), Quartz (Mac)• 3D: DirectX, OpenGl• Win32, Win64, MacOsX, iOS (iPhone, iPad)• Flexibel: VPR (Vectorial Polygon Rasterizer)

implementatie (open source)

Page 6: Delphi XE2, door André Mussche op de 4DotNet Developers Day

● Compatible met VNC en RDP, ook Windows Xp● Styles: meegeleverd, zelf handmatig

• style staat los van component zelf, bijv. TButton● Default platform style (look and feel)

• Windows style, MacOs style● Alles is container: ListBox met buttons, images, panels, etc

• Geen beperking door Windows API (Listbox met ListItems)● 1e versie, opnieuw opgezet

• beperkingen t.o.v. VCL (geen actions en anchors) ● Import van 3d objecten (.3ds)

Firemonkey (2)

Page 7: Delphi XE2, door André Mussche op de 4DotNet Developers Day

● 2 soorten frameworks:• Mac C Frameworks (C/C++)• Objective-C Framework (Delphi, interfaces)

● Alles moet via “XCode” • Taal: Objective-C

O Aparte C variant, met veel hakenO Lastig te programmeren, gelukkig met Delphi een stuk

eenvoudiger :-)

Mac OS X

Page 8: Delphi XE2, door André Mussche op de 4DotNet Developers Day

Mac OS X (2)

- (NSTextField*) addFieldWithTitle:(NSString*) aTitle at: (NSRect) aRect { NSTextField* label = [[[NSTextField alloc] initWithFrame: aRect] autorelease]; [label setStringValue: aTitle]; [[window contentView] addSubview: label]; return label;}

function TappDelegate.addFieldWithTitle (const aTitle: string; at: NSRect): NSTextField;begin Result := TNSTextField.Wrap(TNSTextField.Alloc.initWithFrame(at)); Result.setStringValue(NSStr(aTitle)); TNSView.Wrap(window.contentView).addSubview(Result);end;

Page 9: Delphi XE2, door André Mussche op de 4DotNet Developers Day

● GUI: XCode Designer O lastig, zelfs Mac fans klagen eroverO “het beste is zelf in code doen: iets meer werk maar dan doet

het ten minste wat je wil” ● Gelukkig Firemonkey(FMX) → stuk eenvoudiger :-)● Ook mogelijk om native Cocoa controls te gebruiken

● Nadeel: • 3d werkt niet in VmWare: alleen op Apple hardware mag

Vmware Fusion gebruikt worden O Vmware Player + Workstation via “unlock” hack

• Dus 3d effecten met FMX niet demonstreerbaar

Mac OS X (3)

Page 10: Delphi XE2, door André Mussche op de 4DotNet Developers Day

● Op laatste moment toegevoegd● Gebruikt FPC (free pascal compiler) ivm ARM ● Volgende versie wordt eigen ARM compiler gebruikt ● Simulator op de Mac, geen emulator

• Stuk sneller (geen 2 minuten opstarttijd zoals bij Android?)

• Niet 100%, maar veel overeenkomsten iOS en Mac dus geen direct probleem

● Via gratis Apple account simulator gebruiken● Voor 99 dollar per jaar 100 devices + Apple Store

iOS (iPhone/iPad)

Page 11: Delphi XE2, door André Mussche op de 4DotNet Developers Day

● Gebruik van namespace support door Delphi zelf● Nodig voor VCL/FMX en cross platform● Voorbeelden:

• VCL.Controls, VCL.Touch.Gestures, etc• FMX.Controls. FMX.Filters.Effects, etc• Macapi.QuartzCore, Macapi.Mach, Macapi.CocoaTypes, etc• Winapi.ActiveX, Winapi.Windows, Winapi.DirectDraw, etc• XML.Win.msxmldom, etc• System.Win.Registry, etc• Data.Win.ADODB, Data.Cloud.AmazonAPI, etc

● Automatische prefix, afhankelijk van VCL of FMX project● Backwards compatible met bestaande code

Unit Scope Names

Page 12: Delphi XE2, door André Mussche op de 4DotNet Developers Day

● Ingebouwde skinning/theme support voor VCL(voorheen 3rd party)● Veel bestaande VCL applicaties● Veel styles meegeleverd

• zelf via editor eigen style maken

VCL styles

Page 13: Delphi XE2, door André Mussche op de 4DotNet Developers Day

VCL styles (2)

Page 14: Delphi XE2, door André Mussche op de 4DotNet Developers Day

● Databinding: • elk (visueel) element te verbinden met elk type data

● Vooral database• bijvoorbeeld een dataset rechtstreeks aan grid

koppelen● Krachtige expression engine

• elke object mogelijk + two way• maar wat omslachtiger + fixed string

● Nu 1e versie, waarschijnlijk later language/compiler integratie

LiveBindings

Page 15: Delphi XE2, door André Mussche op de 4DotNet Developers Day

● Datasnap volwassen? • begint steeds meer te lijken op WCF en RemObjects• REST, JSON, compression, encryption, HTTPS,

broadcasts, events, sessions, tunnels, dynamische intercepts, etc

• Connectors (generated code):O iOS (iPhone, Objective-C)O Windows Phone 7 (C#, Silverlight)O Android (Java)O Blackberry (Java)

• Cloud support (Azure, Amazon), generieke API

Datasnap

Page 16: Delphi XE2, door André Mussche op de 4DotNet Developers Day

● TVirtualInterface• dll als interface• runtime objecten maken op basis van interface: mock

object voor unit testen• soft interface / duck typing:

O als functies van object en interface overeenkomen, dan object als interface te gebruiken

• AOP (Aspect Oriented Programming)

RTTI

IDuck = interface procedure Quack; procedure Feathers; end;

TPerson = class public procedure Quack; procedure Feathers; procedure Name; end;

Page 17: Delphi XE2, door André Mussche op de 4DotNet Developers Day

● IDE:• Project manager, option sets• Remote debugging (Win32, Win64, MacOS)• Deployment manager

● Extra 3rd party toevoeging• FastReport (ter vervanging van Rave Reports op lange

termijn)• Documentation Insight (WYSIWYG editor, XMLDoc in

code)• (AQTime, Beyond Compare, CodeSite, FinalBuilder,

IntraWeb, etc)

IDE, 3rd party

Page 18: Delphi XE2, door André Mussche op de 4DotNet Developers Day

Demos

Page 19: Delphi XE2, door André Mussche op de 4DotNet Developers Day

● Eerste update ondertussen al uit● Firemonkey uitbreidingen/verbeteringen● Livebindings integratie?● Ontwikkel team uitbreiding, investeringen● Compiler:

• ARM cpu • Windows 8• native Android• native iOS• Mac 64bit

● OpenCL integratie?

Toekomst

Page 20: Delphi XE2, door André Mussche op de 4DotNet Developers Day

Einde...

Vragen?