Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Joomla Day DK 2012

1,050 views

Published on

  • Be the first to comment

Joomla Day DK 2012

  1. 1. What’s new in theJoomla Platform?2012 EditionBy Rouven Weßling
  2. 2. Who am I?
  3. 3. Who am I?Active in the JBS since 2009
  4. 4. Who am I?Active in the JBS since 2009Platform maintainer for about ayear
  5. 5. Who am I?Active in the JBS since 2009Platform maintainer for about ayearBy pull requests most activeplatform contributor
  6. 6. I talk really fast...
  7. 7. I talk really fast......so stop me whenever you need to! ;)
  8. 8. HistoryWhat’s new?What’s in it for the future?
  9. 9. A brief history
  10. 10. A (very) brief history
  11. 11. Platform split (or “forked”) in early 2011
  12. 12. Platform split (or “forked”) in early 2011First release (11.1) in July 2011 - mostly rebranded libraries from the CMS
  13. 13. Platform split (or “forked”) in early 2011First release (11.1) in July 2011 - mostly rebranded libraries from the CMS11.2 released only 3 weeks later
  14. 14. Platform split (or “forked”) in early 2011First release (11.1) in July 2011 - mostly rebranded libraries from the CMS11.2 released only 3 weeks later shipped with Joomla! 1.7.0
  15. 15. Platform split (or “forked”) in early 2011First release (11.1) in July 2011 - mostly rebranded libraries from the CMS11.2 released only 3 weeks later shipped with Joomla! 1.7.0Not many big new features - but vastly better documentation.
  16. 16. Platform split (or “forked”) in early 2011First release (11.1) in July 2011 - mostly rebranded libraries from the CMS11.2 released only 3 weeks later shipped with Joomla! 1.7.0Not many big new features - but vastly better documentation.One notable exception is support for CLI applications
  17. 17. 11.3 released in November 2011
  18. 18. 11.3 released in November 2011 Support for web applications (JWeb)
  19. 19. 11.3 released in November 2011 Support for web applications (JWeb) HTTP client abstraction (JHttp)
  20. 20. 11.3 released in November 2011 Support for web applications (JWeb) HTTP client abstraction (JHttp) image manipulation (JImage)
  21. 21. 11.3 released in November 2011 Support for web applications (JWeb) HTTP client abstraction (JHttp) image manipulation (JImage) GitHub API (JGitHub)
  22. 22. 11.3 released in November 2011 Support for web applications (JWeb) HTTP client abstraction (JHttp) image manipulation (JImage) GitHub API (JGitHub) Autoloader
  23. 23. 11.4 released in January 2012
  24. 24. 11.4 released in January 2012 shipped with Joomla! 2.5
  25. 25. 11.4 released in January 2012 shipped with Joomla! 2.5 Support for multiple databases
  26. 26. 11.4 released in January 2012 shipped with Joomla! 2.5 Support for multiple databases Only MySQL and Microsoft SQL
  27. 27. Award winning2012 J.O.S.C.A.R. as Innovation of the Year
  28. 28. What’s new?In 12.1 and 12.2
  29. 29. Expanded database support
  30. 30. Expanded database supportPostgreSQL
  31. 31. Expanded database supportPostgreSQLSQLite (PDO)
  32. 32. Expanded database supportPostgreSQLSQLite (PDO)Oracle (PDO)
  33. 33. Expanded database supportPostgreSQLSQLite (PDO)Oracle (PDO)Previously supported
  34. 34. Expanded database supportPostgreSQLSQLite (PDO)Oracle (PDO)Previously supported MySQL
  35. 35. Expanded database supportPostgreSQLSQLite (PDO)Oracle (PDO)Previously supported MySQL Microsoft SQL
  36. 36. Database iterator
  37. 37. Database iteratorAllows you to traverse trough rows 1 by 1
  38. 38. Database iteratorAllows you to traverse trough rows 1 by 1Very efficient for large datasets
  39. 39. Database iteratorAllows you to traverse trough rows 1 by 1Very efficient for large datasets Even more efficient when you need to abort midway
  40. 40. Database iteratorAllows you to traverse trough rows 1 by 1Very efficient for large datasets Even more efficient when you need to abort midwayVery inefficient for small datasets
  41. 41. Database iteratorAllows you to traverse trough rows 1 by 1Very efficient for large datasets Even more efficient when you need to abort midwayVery inefficient for small datasetsJDatabaseDriver::getIterator()
  42. 42. New slim MVC
  43. 43. New slim MVCInterface based
  44. 44. New slim MVCInterface based JController, JModel, JView
  45. 45. New slim MVCInterface based JController, JModel, JView Old classes renamed to JControllerLegacy, etc.
  46. 46. New slim MVCInterface based JController, JModel, JView Old classes renamed to JControllerLegacy, etc. Some (very) basic classes (e.g. JModelBase, JModelDatabase) exist
  47. 47. New slim MVCInterface based JController, JModel, JView Old classes renamed to JControllerLegacy, etc. Some (very) basic classes (e.g. JModelBase, JModelDatabase) exist All other plumbing needs to be done by you (no CRUD)
  48. 48. How slim?
  49. 49. How slim?interface JController extends Serializable{ public function execute(); public function getApplication(); public function getInput();}
  50. 50. How slim?interface JModel{ public function getState(); public function setState(JRegistry $state);}
  51. 51. How slim?interface JView{ public function escape($output); public function render();}
  52. 52. Crypt package
  53. 53. Crypt packageSuccessor for JSimplecrypt
  54. 54. Crypt packageSuccessor for JSimplecryptSupports more algorithms
  55. 55. Crypt packageSuccessor for JSimplecryptSupports more algorithms 3DES
  56. 56. Crypt packageSuccessor for JSimplecryptSupports more algorithms 3DES Blowfish
  57. 57. Crypt packageSuccessor for JSimplecryptSupports more algorithms 3DES Blowfish Rijndael 256
  58. 58. Crypt packageSuccessor for JSimplecryptSupports more algorithms 3DES Blowfish Rijndael 256Based on mycrypt - uses native code.
  59. 59. Crypt package
  60. 60. Crypt packageA well tested source for random data
  61. 61. Crypt packageA well tested source for random dataJCrypt::genRandomBytes
  62. 62. Crypt packageA well tested source for random dataJCrypt::genRandomBytesIf possible we tap openssl_random_pseudo_bytes
  63. 63. Crypt packageA well tested source for random dataJCrypt::genRandomBytesIf possible we tap openssl_random_pseudo_bytesIf not we gather our own entropy
  64. 64. Crypt packageA well tested source for random dataJCrypt::genRandomBytesIf possible we tap openssl_random_pseudo_bytesIf not we gather our own entropyBased on a research paper that found issues in several PHP application’srandom number generation - including Joomla!
  65. 65. Crypt package
  66. 66. Crypt packageInterface JCryptPassword
  67. 67. Crypt packageInterface JCryptPasswordImplementation JCryptPasswordSimple
  68. 68. Crypt packageInterface JCryptPasswordImplementation JCryptPasswordSimple Supports MD5, PBDKF, Blowfish and “Joomla”
  69. 69. Crypt packageInterface JCryptPasswordImplementation JCryptPasswordSimple Supports MD5, PBDKF, Blowfish and “Joomla”Allows switching out the password handling library
  70. 70. Crypt packageInterface JCryptPasswordImplementation JCryptPasswordSimple Supports MD5, PBDKF, Blowfish and “Joomla”Allows switching out the password handling library for example PHP-PasswordLib
  71. 71. Crypt packageInterface JCryptPasswordImplementation JCryptPasswordSimple Supports MD5, PBDKF, Blowfish and “Joomla”Allows switching out the password handling library for example PHP-PasswordLibNot yet used by JUser
  72. 72. Composer support
  73. 73. Composer supportDependency management forPHP
  74. 74. Composer supportDependency management forPHPAllows for far easier integration ofthe platform into other projects
  75. 75. Composer supportDependency management forPHPAllows for far easier integration ofthe platform into other projectsDe facto standard in the PHPcommunity
  76. 76. Composer supportDependency management forPHPAllows for far easier integration ofthe platform into other projectsDe facto standard in the PHPcommunityFor more info see http://getcomposer.org
  77. 77. ...and much more
  78. 78. ...and much moreFile patcher
  79. 79. ...and much moreFile patcherString inflecting and normalizing
  80. 80. ...and much moreFile patcherString inflecting and normalizingStemming
  81. 81. ...and much moreFile patcherString inflecting and normalizingStemmingnew Router
  82. 82. What’s in it for the future?
  83. 83. Error handling
  84. 84. Error handlingJError is already on its way out
  85. 85. Error handlingJError is already on its way outJObject::getError andJObject::setError are going too
  86. 86. Error handlingJError is already on its way outJObject::getError andJObject::setError are going tooExceptions are the future
  87. 87. Error handling JError is already on its way out JObject::getError and JObject::setError are going too Exceptions are the futurethrow new Exception(“Ups!”);throw new RuntimeException(“Ups!”);throw new LogicException(“Ups!);
  88. 88. Package isolation
  89. 89. Package isolationCurrently the platform is one big package
  90. 90. Package isolationCurrently the platform is one big package 42 subpackages
  91. 91. Package isolationCurrently the platform is one big package 42 subpackagesWe want to make them available as individual packages using composer
  92. 92. Package isolationCurrently the platform is one big package 42 subpackagesWe want to make them available as individual packages using composerMakes it easier for applications to cherry-pick what they need
  93. 93. Package isolation
  94. 94. Package isolationWe have a pretty good understanding of the dependencies betweensubpackages
  95. 95. Package isolationWe have a pretty good understanding of the dependencies betweensubpackages There are too many
  96. 96. Package isolationWe have a pretty good understanding of the dependencies betweensubpackages There are too manyWe want to reduce them as much as feasible
  97. 97. Package isolation examples
  98. 98. Package isolation examplesDirectoryIterator instead of JFolder::files() and JFolder::folders()
  99. 99. Package isolation examplesDirectoryIterator instead of JFolder::files() and JFolder::folders()Exceptions instead of JError
  100. 100. Package isolation examplesDirectoryIterator instead of JFolder::files() and JFolder::folders()Exceptions instead of JErrorNot using per-package exceptions (JDatabaseException,LogException)
  101. 101. Unit testing and being testable
  102. 102. Unit testing and being testableThere’s a lot of old code that’shard or impossible to isolate fortesting
  103. 103. Unit testing and being testableThere’s a lot of old code that’shard or impossible to isolate fortesting JRequest
  104. 104. Unit testing and being testableThere’s a lot of old code that’shard or impossible to isolate fortesting JRequest JError
  105. 105. Unit testing and being testableThere’s a lot of old code that’shard or impossible to isolate fortesting JRequest JErrorReplacing these classes withobject oriented replacements
  106. 106. Unit testing and being testableThere’s a lot of old code that’shard or impossible to isolate fortesting JRequest JErrorReplacing these classes withobject oriented replacements JInput
  107. 107. Unit testing and being testableThere’s a lot of old code that’shard or impossible to isolate fortesting JRequest JErrorReplacing these classes withobject oriented replacements JInput Exception
  108. 108. Removing CMS specific code
  109. 109. Removing CMS specific codeMoved in 3.0 JEditor JHelp JToolbar
  110. 110. Removing CMS specific codeMoved in 3.0 JEditor JHelp JToolbarTo be moved JComponentHelper JModuleHelper
  111. 111. Leveraging the power of PHP
  112. 112. Leveraging the power of PHPRemoving hacks and workarounds wherever possible (z.B.JProfiler::getMemory)
  113. 113. Leveraging the power of PHPRemoving hacks and workarounds wherever possible (z.B.JProfiler::getMemory)Integrating with PHP trough interfaces like Countable, Serizeable,JsonSeriazeable (PHP 5.4 only) Iterator and IteratorAggregate
  114. 114. Leveraging the power of PHPRemoving hacks and workarounds wherever possible (z.B.JProfiler::getMemory)Integrating with PHP trough interfaces like Countable, Serizeable,JsonSeriazeable (PHP 5.4 only) Iterator and IteratorAggregateUsing SPL Exception (RuntimeException,UnexpectedValueException)
  115. 115. Leveraging the power of PHPRemoving hacks and workarounds wherever possible (z.B.JProfiler::getMemory)Integrating with PHP trough interfaces like Countable, Serizeable,JsonSeriazeable (PHP 5.4 only) Iterator and IteratorAggregateUsing SPL Exception (RuntimeException,UnexpectedValueException)Leveraging the SPL wherever possible (e.g. DirectoryItertor,SplPriorityQueue)
  116. 116. Example$var = JRequest::get();echo count($var);$input = new JInput;echo = count($input);
  117. 117. More API consumers
  118. 118. More API consumersJGithub (since 11.3)
  119. 119. More API consumersJGithub (since 11.3)OAuth client
  120. 120. More API consumersJGithub (since 11.3)OAuth client OAuth2 included in 12.3
  121. 121. More API consumersJGithub (since 11.3)OAuth client OAuth2 included in 12.3JGoogle (since 12.3)
  122. 122. More API consumersJGithub (since 11.3)OAuth client OAuth2 included in 12.3JGoogle (since 12.3)Many more in progress:
  123. 123. More API consumersJGithub (since 11.3)OAuth client OAuth2 included in 12.3JGoogle (since 12.3)Many more in progress: JFacebook
  124. 124. More API consumersJGithub (since 11.3)OAuth client OAuth2 included in 12.3JGoogle (since 12.3)Many more in progress: JFacebook JMediawiki
  125. 125. New APIs in the future
  126. 126. New APIs in the futureJKeychain
  127. 127. New APIs in the futureJKeychain Secure Key-Value-Storage based on JRegistry
  128. 128. New APIs in the futureJKeychain Secure Key-Value-Storage based on JRegistryNew event system
  129. 129. New APIs in the futureJKeychain Secure Key-Value-Storage based on JRegistryNew event systemUnified Content Model
  130. 130. PSR
  131. 131. PSRPSR-2 support is almost complete very few files don’t comply for good reason the PSR-0 references is ignoredPSR-0 will be reconsidered when we move to namespaces. It’s all butrequired for ComposerPSR-1 will not be supported
  132. 132. “Another development that force me torethink ZF approach is the maturity ofJoomla-Platform itself. Ever since Joomladecided to split the cms and platform partof Joomla saperately, we noticed a markedimprovement in the platform code.” -Azrul, JomSocial
  133. 133. Thank you for your attention!Rouven Weßling@RouvenWesslingwww.rouvenwessling.deme@rouvenwessling.de
  134. 134. Thank you for your attention! My Workshops tomorrow: •Building a standalone application on the platform •Using the new MVC with a platform based web app Both in Room 150Rouven Weßling@RouvenWesslingwww.rouvenwessling.deme@rouvenwessling.de

×