Upgrade to Pro — share decks privately, control downloads, hide ads and more …

.Net pour le développeur Java - une source d'inspiration?

.Net pour le développeur Java - une source d'inspiration?

Pour se remettre dans le contexte, nous parlons ici de .Net présenté à une conférence Java.
Nous allons revoir un peu d’historique des débuts pré-.Net et des inspirations mutuelles des deux environnements. Puis nous parlerons fonctionnalités à travers un exemple illustrant notamment les points essentiels de C# aujourd’hui avec les lambdas qui arriveront avec Java 8.
Nous finirons enfin avec une partie communautaire.

B473d48fbe1ae6381ef88e6ed19e8184?s=128

Rui Carvalho

April 25, 2012
Tweet

Transcript

  1. .Net pour le développeur Java : une source d'inspiration ?

    Cyrille Martraire @cyriux Rui Carvalho @rhwy
  2. C’est vendredi soir http://www.futura-sciences.com/fr/doc/t/medecine-1/d/et-bailler-de-plaisir_571/c3/221/p3/

  3. None
  4. Au menu • Le point sur .Net • Ce qui manque à

    Java • Du fun ! http://blog.gaborit-d.com/17-parodies-fun-de-la-situation-room/ Au menu Le point sur .Net Ce qui manque à Java
  5. http://blog.gaborit-d.com/17-parodies-fun-de-la-situation-room/ Au menu Le point sur .Net Ce qui manque

    à Java
  6. Rui - @rhwy •  Développeur, architecte, blogueur, prof •  indépendant

    chez ArtOfNet •  Dans le web et technos microsoft depuis près de 15 ans •  Spécialiste Asp.Net Mvc, Sql Server et Speaker au Techdays •  Animateur dans la communauté .Net ALT.NET Paris •  Passionné de dev, OSS, web, agilité, architectures •  Veut devenir maitre artisan du logiciel quand il sera grand
  7. Cyrille - @cyriux •  Ingénieur généraliste ENSTA à Brest • 

    Développeur depuis les startups en 2000, et en finance depuis •  Fondateur de la communauté Software Craftsmanship Paris •  Co-fondateur et directeur technique d’Arolla •  Passionné de développement, DDD, TDD, BDD, specs agiles… •  Veut devenir maitre artisan du logiciel quand il sera grand
  8. None
  9. None
  10. None
  11. None
  12. .Net pour moi au départ…

  13. http://www.freeimageslive.co.uk/free_stock_image/bsodbluescreen6927jpg

  14. None
  15. "La Guerre des Voisins"

  16. Once upon a Time ...

  17. None
  18. 1996 - Java Applets (cool)

  19. None
  20. 1996 – Active X (cool?)

  21. (sub{s,^(.*)$,$1+//,e for@_})->($A) CGI Perl

  22. None
  23. 1995 – ASP / IIS

  24. None
  25. ~ 1999 JSP-J2EE

  26. None
  27. Reprenons le fil de l'histoire - next -

  28. 1996 JDK 1.0 1997 JDK 1.1 1998 JDK 1.2 2000

    JDK 1.3 2002 JDK 1.4 2002 .Net 1.0
  29. 2004 JDK 5.0 2002 JDK 1.4 2002 .Net 1.0 2003

    .Net 1.1 2006 JDK 6.0 2005 .Net 2.0 2011 JDK 7.0 2005 .Net 3.0 2007 .Net 3.5 2010 .Net 4.0 2012 .Net 4.5 2013? JDK 8.0
  30. None
  31. None
  32. Oui mais concrètement?

  33. .Net : une réplique de Java ?

  34. •  'instanceof' is called 'is' •  {} •  Majuscules !

  35. Naturellement polyglotte !

  36. Séduire les fans de C++

  37. None
  38. Séduire les fans de C++ •  exe .dll autour du

    bytecode •  arithmétique de pointeurs •  unsafe, fixed : mémoire à la main •  conditional compilation
  39. Fonctionnalités

  40. Java Vs. C#/.Net Jaloux de C# Mieux en Java LINQ

    Razor Lambdas Extension methods F# Dynamics Expression trees Reified generics Operator overloading Lifted “?” syntax delegate Java enum as class Array ≈ Collection Partial class Conditional Compilation Generator (yield) 3rd-party Java libs & APIs Pure Java → Portable Open-Source
  41. Votre. feature Net préférée ?

  42. Votre feature Net préférée ? • Syntax Sugars • Extension Methods • Lambdas

    • Linq • (Razor)
  43. Prenons un exemple

  44. Voyage dans les bonnes choses de C# Old School to

    LINQ
  45. Itérators var Linq Extension Methods Anonymous objects Dynamics lambdas Auto

    Properties
  46. None
  47. None
  48. None
  49. None
  50. None
  51. None
  52. None
  53. None
  54. None
  55. None
  56. SOLID? DRY? refactor

  57. None
  58. None
  59. None
  60. None
  61. None
  62. None
  63. None
  64. None
  65. None
  66. Ce qui nous amène à LINQ

  67. None
  68. None
  69. Derniers Points

  70. Dynamics != variant = Type spécial extensible != dynamic proxy

    = proxy contrat infini + méthodes d'accès
  71. None
  72. Mais aussi

  73. Razor - syntaxe hybride HTML/C# <h1>Ma collection</h1> @foreach(var item in

    Model) { int next = item.Count+1; <h2>@item.Title</h2> <a href="#@next">Next</a> } Ca poutre !
  74. Play 2 - copiteur en Sca la @(customer: Customer, orders:

    List[Order]) <h1>Welcome @customer.name!</h1><ul> @for(order <- orders) { <li>@order.getTitle()</li>} </ul>
  75. Communautés

  76. Plus c’est social mieux c’est

  77. None
  78. None
  79. http://monodevelop.com/Screenshots

  80. http://monodevelop.com/Screenshots

  81. None
  82. None
  83. None
  84. http://blog.zap2it.com/pop2it/2012/02/sacha-baron-cohen-aka-the-dictator-will-attend-the-oscars.html http://bourse-planete.com/leffet-moutonnier/

  85. http://blog.zap2it.com/pop2it/2012/02/sacha-baron-cohen-aka-the-dictator-will-attend-the-oscars.html http://bourse-planete.com/leffet-moutonnier/

  86. Pour Finir Quelques Messages

  87. JVM != JAVA

  88. None
  89. Enterprise Wars ...

  90. http://www.designsontalent.com/blog/bid/50260/10-Tips-for-Reinventing-Talent-Acquisition

  91. C# : le langage idéal ?

  92. Questions http://www.actone.net/methodes/poser-des-questions/