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.

AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application Development

428 views

Published on

The annual review session by the AMIS team on their findings, interpretations and opinions regarding news, trends, announcements and roadmaps around Oracle's product portfolio.

Published in: Software
  • Be the first to comment

  • Be the first to like this

AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application Development

  1. 1. Oracle OpenWorld & CodeOne Review Pillar 2: Application Development Custom Application Development Review of Oracle OpenWorld & CodeOne 2018 1 Lucas Jellema, CTO of AMIS Fall 2018
  2. 2. • Make JavaScript/HTML5/REST development simpler and more productive • Provide best-of-class tooling for modern JavaScript UI • Allow coders and low-code developers to work in harmony • Reduce IT backlog and build solutions faster 2 Low Code & High Code
  3. 3. Oracle Java Extension Toolkit (JET) Oracle JET is targeted at JavaScript developers working on client-side applications. It's a collection of open source JavaScript libraries along with a set of Oracle contributed JavaScript libraries that make it as simple and efficient as possible to build web and mobile applications that consume and interact with Oracle products and services, specifically Oracle Cloud Services.
  4. 4. User Interface Basic Confidential – Oracle Internal/Restricted/Highly Restricted 5
  5. 5. User Interface Advanced Confidential – Oracle Internal/Restricted/Highly Restricted 6
  6. 6. Oracle JET - Value Proposition • Enterprise ready - built-in accessibility, security, internationalization • Rich components set - including data visualization • Advance routing - for single page applications • Common model – for simplified data binding with web services • Built-in responsive UI - at both the CSS and JS level • Fully Open-Source - leverage existing skills and community knowledge • Modular architecture – use what you need, lightweight and fast • Optimized for Oracle customers – Supports Oracle Alta UI and Oracle REST 7
  7. 7. Oracle JET Architecture 8 View JQueryUI (deprecated) SASS View-Model Model RequireJS OracleJET Routing Client Server Oracle JET UI Components (Web Components) Hammer Abstracted Binding Oracle JET Common Model API Web Services CCA Web Components XHR AJAX Web Socket
  8. 8. • Features & bug fixes delivered every two months since October 2014 • JET 6.0.0 is our 23rd on-schedule release v0.5 JET 2.0.0 JET 2.1.0 JET 4.0.0 Oct 2014 Aug 2016 JET 1.0.0 JET 5.0.0 Apr 2018Feb 2016 Sept 2017 JET 5.1.0 Jun 2018 Aug 2018 JET 6.0.0 Oct 2018 1st internal release Move to SemVer Next Major JET 6.0.0 GA – Oct 15th, 2018 Open Source release! Web Comp. intro Minor release – Bug fixes JET 5.2.0 Major release
  9. 9. High Code - What’s The Problem? 10
  10. 10. Developers Spectrum Confidential – Oracle Internal 11
  11. 11. Oracle Visual Builder Cloud Service Build and host web and mobile applications in a faster and simpler way with zero install and visual development experience 12Confidential – Oracle Internal
  12. 12. What Is VBCS? • Oracle JET JavaScript Toolkit • A rapid application development environment for that toolkit • A deployment platform that hosts the apps you • A database for custom business objects • REST connections for connecting to remote data • Integration with IDCS/SIM for security and SSO with Oracle Cloud • Integration with the rest of the Oracle SaaS/PaaS platform for additional functionality • CRM, HCM, Integration Cloud connectors, Process Cloud processes, Content Cloud documents, etc.
  13. 13. Visual Builder Review of Oracle OpenWorld & CodeOne 2018 14
  14. 14. Flexibility Through Coding • Directly access code • Add your own logic • Extendable platform • UI Components • JavaScript Libraries • Styles Confidential – Oracle Internal 15
  15. 15. API Platform/Apiary catalog could be coming Review of Oracle OpenWorld & CodeOne 2018 16 Apiary & Graph QL
  16. 16. Visual Builder • JET Web Component Exchange • PCS Integration • Translation Support • Connection Catalog • Easily consume APIs from SaaS and … Oracle Integration Cloud • Not yet from API Platform • Developer Cloud integration • Use Git under Developer Cloud for source code control • Mobile support plus: Progressive Web Apps (PWA) – november 2018 • Portal Visual Builder applications – • can run fully standalone (no Cloud access required) • CDN deployment Review of Oracle OpenWorld & CodeOne 2018 17
  17. 17. Review of Oracle OpenWorld & CodeOne 2018 18
  18. 18. Review of Oracle OpenWorld & CodeOne 2018 19
  19. 19. Digital Assistant Review of Oracle OpenWorld & CodeOne 2018 20
  20. 20. Review of Oracle OpenWorld & CodeOne 2018 21
  21. 21. Conversation UI & Digital Assistant Review of Oracle OpenWorld & CodeOne 2018 22 Human speak Voice to Text Text to Structure (NLP) Type State Machine utterance intents Conversation state flows entities Next: Update state Fetch Ask/Display
  22. 22. Intents • Known steps for a user to take Review of Oracle OpenWorld & CodeOne 2018 23
  23. 23. Intent is derived from utterance Review of Oracle OpenWorld & CodeOne 2018 24
  24. 24. 25 Oracle Digital Assistant Cloud Platform Intents Utterances Simulator Train ML
  25. 25. Oracle Digital Assistant Review of Oracle OpenWorld & CodeOne 2018 26
  26. 26. Dialog Flow • The workflow from state to state Review of Oracle OpenWorld & CodeOne 2018 27
  27. 27. 28 Heart of Chatbot : Declarative Interaction OBotML
  28. 28. Visual Conversation Designer Review of Oracle OpenWorld & CodeOne 2018 29
  29. 29. 30 Deployment : Configure Facebook Messenger
  30. 30. One Multichannel Digital Assistant combining many Skills Review of Oracle OpenWorld & CodeOne 2018 31
  31. 31. Future Vision: Assemble Digital Assistant from Skill Catalog Review of Oracle OpenWorld & CodeOne 2018 32
  32. 32. Digital Assistant Cloud • Visually design dialog through prototyping (“citizen chatbot developer”) • Bundle conversations (skills) in one Digital Assistant • Allow jumps between skills – while retaining context (state) • Integrate with • Slack, Skype for Business, Twillio, WhatsApp, Facebook Messenger • Alexa • Out of the Box Skills & Skills Store • Multi Language • Leverage Google Translate or Microsoft Translator Services Review of Oracle OpenWorld & CodeOne 2018 33
  33. 33. RDK for Conversational UI Review of Oracle OpenWorld & CodeOne 2018 34 http://tinyurl.com/OAUXConversationalUI
  34. 34. Oracle Database Application Server & Development Platform Review of Oracle OpenWorld & CodeOne 2018 35 Oracle Database Data Store & ACID OLTP SQL Engine Application Development & Runtime
  35. 35. Oracle Database Application Server & Development Platform Review of Oracle OpenWorld & CodeOne 2018 36 Oracle Database Application Development & Runtime 36 table view package Materialized view Flashback index No SQL Big Data SQL Sharding Multitenant (Pluggable Database) Architecture PL/SQL engine Advanced Analytics Advanced Compression PartitioningDatabase Vault Audit File, mail, … Query Result Change Notification Native Database Web Services Application Context Virtual Private Database dbms_ scheduler Database Link, Gateway, Heterogeneous Services Data Store & ACID OLTP SQL Engine
  36. 36.  PL/SQL IDE  SQL editor  GUI for browsing and managing database objects  Ad Hoc reporting  Database Design & Data Modeling  Database Administration  3rd Party RDBMS Migrations to Oracle  Deploy and Administer Oracle REST Data Services  REST Enablement of the Database  Command Line Interface 37 SQL Developer, What Is It?
  37. 37. Oracle SQLcl  Everything you like about SQL*Plus and SQL Developer  Including:  in-line editing  query/script history  custom commands  client-side JavaScript scripting  automatic output formatting  built-in SSH
  38. 38. Project Raptor  Early Adopter on OTN 2005 1.1  File Based PL/SQL editing  Reports  Ships with 11gR1 1.5.x  Localizations - Japanese, Spanish, Italian, German, French, Portuguese, Chinese, & Koreans  Ships with 11gR2 SQLDev v1.0  SQL Worksheet  Procedure Editor  The world takes notice! 1.5  Schema Copy/Diff/Export  Thick connections  Versioning  TimesTen 2.1  Unit Testing  Data Modeler Viewer  Unshared SQL Worksheets 2007 201020092006 3.0  Full Data Modeler  View > DBA  SQL Tuning Advisor  Query Builder 2008 2011 2012 3.1  New Database DIFF  PDF Reports  RMAN  Data Pump 2013 3.2  APEX Listener / ORDS Support  Database 12c Support  Schema Service Support 4.0  Java 7  ASH/AWR/ADDM  Color Coded Connections  Command line Interface 4.0.3  Optimized Code Insight  Oracle Big Data Appliance 2014 2015 2016 4.1  ORDS Included/Full GUI  instance Viewer  SQLcl  Copy PDB to DBaaS  Larry live demos PDB relocate @ OOW 4.2  Real Time SQL Monitoring  Top SQL Report  Formatter & Other Editor Enhancements  Easier RESTful Services Development 2017 SQLcl  New CLI  Modern SQL*Plus Release History
  39. 39. 2017 2017.2  Bug Fixes  Sharding  Data Guard 17.3 & 17.4  Bug Fixes Quarterly Releases!!! 2018 Release History 18.1  Autonomous Data Warehouse Support  New Welcome Screen/Connections  SQL Injection Detection  PL/Scope SQL Statement Support  Better Formatting 18.2/3  PL/SQL Injection Detection  Cloud data Loads  SQL Developer Web
  40. 40. Real Time SQL Monitoring: HTML Reports
  41. 41. Making Cloud Easier: Getting Data into your Service  New or Existing Table: load csv from machine/OSS  Coming in 18.3:  Load multiple tables/files  Data Pump on premises to ATW/P  Coming to SQL Developer Web  WIP Drag and Drop files directly to your schema
  42. 42. Redshift Migrations  Unload schemas to S3  Create new schema on ADW  Move data over
  43. 43. Oracle SQL Developer Web  Oracle Database Cloud Services Console  Instance Management  Fully Functional Query/PLSQL Worksheet  Schema Diagramming  Object Create/Alter Dialogs  Real Time SQL Monitoring
  44. 44.  OCI Consoles to get native database monitoring features  SQL Developer Web across all Oracle DBCS  Extend LiquiBase to support 100% Oracle SCHEMA objects  Integrated with SQLcl  Enhanced SQL Developer change management screens and reports 2019 SQL Developer Plans
  45. 45. Quick SQL • From simple yaml notation • Rapid generation of DDL and DML • For tables, views, constraints, TAPI and generated demo data Review of Oracle OpenWorld & CodeOne 2018 46
  46. 46. Live SQL Review of Oracle OpenWorld & CodeOne 2018 47
  47. 47. Review of Oracle OpenWorld & CodeOne 2018 48
  48. 48. Review of Oracle OpenWorld & CodeOne 2018 49
  49. 49. APEX news • Web Source Module (18.1) – leverage any REST API as data source • In addition to tables and views • Use SQL statements to manipulate and enrich the JSON response • Support for Social Sign In (18.2) • GitHub, Google, Facebook, Microsoft, IDCS, OpenID, OAuth2 • APEX static web resources available from global CDN • APEX Curriculum freely available to universities and colleges • Pick up latest [or at least recent] JET release for visualization components • 6 month release cadence • Multi Lingual Engine: use JavaScript and Python for code snippets (next to PL/SQL) • Based on Graal VM Database MLE • Try out at apexea.oracle.com • APEX in Database Application Containers – one APEX base for multiple PDBs Review of Oracle OpenWorld & CodeOne 2018 50
  50. 50. Review of Oracle OpenWorld & CodeOne 2018 51
  51. 51. APEX other things • Regression Testing • Record all requests at ORDS • Replay at any moment • Create tests by simply using the application • Metrics • Technical – which pages are slow/when are spike in traffic • Functional – which features are used/are problematic • Expose through Prometheus Exporter • Use of Flashback • Source code control Review of Oracle OpenWorld & CodeOne 2018 52
  52. 52. APEX is Low Code Middle Tier Application Server Review of Oracle OpenWorld & CodeOne 2018 Oracle Database Client Tier Middle or Business Tier Data Tier DMZ Inside ZoneOutside Zone
  53. 53. APEX is Low Code Middle Tier Application Server Review of Oracle OpenWorld & CodeOne 2018 54 Oracle Database table view pack age Tomcat, WebLogic, Glassfish, Jetty Client Tier Middle or Business Tier Data Tier Application Meta Data Session Data Data Cache Local Co-located PDB Remote instance Modules and Templates meta data DMZ Inside ZoneOutside Zone
  54. 54. APEX Applications using Data from Multiple, Hybrid, Remote Data Sources Review of Oracle OpenWorld & CodeOne 2018 55 Oracle Database Application Meta Data Session Data Data Cache REST API table view pack age Local Co-located PDB Remote instance MySQL Oracle SaaS Web Source Modules Tomcat, WebLogic, Glassfish, Jetty SQL Server Database Links/ Gateway Client Tier Middle or Business Tier Data Tier µ λ µ µ λ Modules and Templates meta data REST API NoSQL
  55. 55. APEX is Low Cost Middle Tier Application Server Review of Oracle OpenWorld & CodeOne 2018 Oracle Database XE Client Tier Middle or Business Tier Data Tier XE Oracle Database 18c XE Release is free – ORDS and APEX can be installed on it ORDS runs on free, open source servers Tomcat, Jetty and Glassfish
  56. 56. Review of Oracle OpenWorld & CodeOne 2018 57 VBCS vs APEX • PL/SQL • And now with Graal VM/MLE also JavaScript & Python • Database oriented • One phyical tier • Can be installed on any Oracle Database instance, anywhere • Could be 18c XE APEX • Javascript • Client oriented • Only runnable on Visual Builder Cloud • In the future also portable (when running only against remote REST) • Any backend (REST API) • Mobile support • Native on device • PWA • Used by Oracle SaaS teams to build new modules Visual Builder Cloud
  57. 57. Eclipse Che – browser based IDE • Runs as Docker Container • Local or Server or Cloud based • Single or Multi user
  58. 58. ADF Review of Oracle OpenWorld & CodeOne 2018 59
  59. 59. ADF Business Components Note: ADF BC exposes REST API Review of Oracle OpenWorld & CodeOne 2018 60 Note: Visual Builder uses ADF BC REST API for its custom business objects
  60. 60. ADF 19c Review of Oracle OpenWorld & CodeOne 2018 61
  61. 61. ADF 19c Review of Oracle OpenWorld & CodeOne 2018 62
  62. 62. Final Slide in ADF What’s Next presentation deck Review of Oracle OpenWorld & CodeOne 2018 63
  63. 63. Review of Oracle OpenWorld & CodeOne 2018 64
  64. 64. Oracle Forms Review of Oracle OpenWorld & CodeOne 2018 65 • Forms Application Deployment Services allows deploying Forms applications from FAR repository to target WebLogic servers
  65. 65. Oracle Forms Review of Oracle OpenWorld & CodeOne 2018 66 • Forms Application Deployment Services allows deploying Forms applications from FAR repository to target WebLogic servers • Developer Cloud Service supports building & deploying Oracle Forms applications (FAR file) on OCI or on premises
  66. 66. Java Review of Oracle OpenWorld & CodeOne 2018 67
  67. 67. Review of Oracle OpenWorld & CodeOne 2018 68
  68. 68. Review of Oracle OpenWorld & CodeOne 2018 69
  69. 69. Java SE Roadmap Review of Oracle OpenWorld & CodeOne 2018 70 Java 11 and Java 17 are LTS releases
  70. 70. Review of Oracle OpenWorld & CodeOne 2018 71
  71. 71. Review of Oracle OpenWorld & CodeOne 2018 72
  72. 72. Review of Oracle OpenWorld & CodeOne 2018 73
  73. 73. Review of Oracle OpenWorld & CodeOne 2018 74
  74. 74. Review of Oracle OpenWorld & CodeOne 2018 75
  75. 75. Review of Oracle OpenWorld & CodeOne 2018 76
  76. 76. Important JEPs in the evolution of Java as a programming language Review of Oracle OpenWorld & CodeOne 2018 77
  77. 77. Large Scale Data Processing Review of Oracle OpenWorld & CodeOne 2018 78 Valhalla
  78. 78. Review of Oracle OpenWorld & CodeOne 2018 79
  79. 79. GraphQL – new style of rich API
  80. 80. Java EE? Review of Oracle OpenWorld & CodeOne 2018 81
  81. 81. Review of Oracle OpenWorld & CodeOne 2018 82
  82. 82. Review of Oracle OpenWorld & CodeOne 2018 83
  83. 83. Jakarta EE Review of Oracle OpenWorld & CodeOne 2018 84
  84. 84. Review of Oracle OpenWorld & CodeOne 2018 85
  85. 85. Java EE at Oracle: WebLogic • WebLogic Release Schedule • 12.2.1 • 12.2.1.2 • 12.2.1.3 (PS3) • 19.1 (PS4) • 19.2 • WebLogic 19.2 will have Java EE 8 support • And work with JDK 8 and JDK 11 Review of Oracle OpenWorld & CodeOne 2018 86
  86. 86. Review of Oracle OpenWorld & CodeOne 2018 87
  87. 87. Review of Oracle OpenWorld & CodeOne 2018 88
  88. 88. Review of Oracle OpenWorld & CodeOne 2018 89
  89. 89. Review of Oracle OpenWorld & CodeOne 2018 90
  90. 90. Application Container Cloud • Maintenance Mode as is • Current offering is convenient – but can be a bit expensive when running many ACC instances • And it does not support bring your own Docker image • Future is probably based on Kubernetes on OCI (aka OKE) • In that case: you only pay for OCI resources • And the Application Container Cloud console, PSM, format are a free convenience Review of Oracle OpenWorld & CodeOne 2018 91
  91. 91. Software Production DevOps, CI/CD, Automation, Flow, Feedback Review of Oracle OpenWorld & CodeOne 2018 92 Plan Code Build Test Release Deploy Operate Agile Development Continuous Integration Continuous Delivery DevOps
  92. 92. The Definition of Done has to mean “Running in Production” Review of Oracle OpenWorld & CodeOne 2018 93
  93. 93. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Continuous Integration, Continuous Delivery, and DevOps – Continuous Integration (CI) is a key component of Agile Development practices. It requires developers to integrate their individual work with one another as early as possible in the software development life cycle. This exposes integration issues and conflicts on a regular basis. – Continuous Delivery (CD) provides tools and best-of-breed practices to deliver quality software quickly. At the end of every CI build, the software is delivered to the QA team for testing and then to the operations team (the Ops in DevOps) for delivery to production environments. Plan Code Build Test Release Deploy Operate Agile Development Continuous Integration Continuous Delivery DevOps
  94. 94. Confidential – Oracle Internal/Restricted/Highly Restricted Source: Better software, faster. Principles of Continuous Delivery and DevOps“, Bert Jan Schrijver CodeOne 2018
  95. 95. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | DevOps Life Cycle – The DevOps lifecycle is a continuous cycle of planning, coding, building, testing, releasing, deploying, operating, and monitoring. – Rather than ending when the code is “live,” the cycle continues by monitoring the current release and working toward the next (and the next…). ReleasePlan Build Operate Code Test Monitor Deploy START
  96. 96. Confidential – Oracle
  97. 97. Infrastructure as Code • CI/CD not only for custom developed software • Also for platform and infrastructure provisioning and configuration • Container build files • Kubernetes resource manipulation yaml-files • Cloud infrastructure management scripts • Ideally code describes the desired end state • Not the commands to execute • Oracle Cloud Infrastructure standardizes on Terraform • Configurable scripts for creating Cloud network resources, spinning up VMs, provisioning Databases, assigning roles and privileges, starting/scaling/stopping services • Note: shell scripts using the OCI CLI are an alternative Confidential – Oracle Internal/Restricted/Highly Restricted
  98. 98. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Foundational cloud service, available for free
  99. 99. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted
  100. 100. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Mobile Application Container Java Containers Database SOA Developer Visual Builder Developer’s front door to Oracle cloud StorageCompute Out-of-the-box integrations with Oracle platform and infrastructure services
  101. 101. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Complete DevOps toolchain Plan Code Build Test Release Deploy
  102. 102. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | • Any software stack • Source control with git • Integrations with popular IDEs – Any IDE with git plugin • Multiple code repos per project • Merge Request workflow Confidential – Oracle Internal/Restricted/Highly Restricted Code VBCS
  103. 103. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Build and Test • Support for popular frameworks • Built-in binary Maven repository • Maven dependency management • Code inspection • Test automation • Docker repository integration Confidential – Oracle Internal/Restricted/Highly Restricted Docker Selenium
  104. 104. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted
  105. 105. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted
  106. 106. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Deploy Built-in support for PSM, OCI-CLI, SQL-CLI, Docker, Terraform, Packer, Kubectl Confidential – Oracle Internal/Restricted/Highly Restricted Application ContainerJavaSOA Bare Metal VMs Database Mobile
  107. 107. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | • Broad set of events e.g. – Repo administration – Issue tracker – Code review – CI/CD • Configurable at project level Confidential – Oracle Internal/Restricted/Highly Restricted Event Notifications Text Messages Phone Call Email
  108. 108. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Use all or part of DevCS via 3rd party integrations Agile Planning Source Control w/Git Continuous Integration (Build, Test) Continuous Deployment DevCS native functionality
  109. 109. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | • Docker commands in build • Publish to any registry including Oracle • Support any Kubernetes including OKE – Kubectl on build server • Support custom build images • Support .NET builds Docker & Kubernetes Support
  110. 110. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | • Automate IaaS tasks • Leverage Terraform build VM image • Orchestrate deployment on OCI – Terraform Plugin pre-installed • Packer support Terraform Support
  111. 111. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Deployment Environments
  112. 112. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | CI/CD with Serverless Fn Confidential – Oracle Internal/Restricted/Highly Restricted 113
  113. 113. Kubernetes changes the game for DevOps (and CI/CD) • Uniform deployment platform: Kubernetes cluster • parity across environments • Uniform deployment artifact: container • Automated Rolling Upgrade facility • Leveraging standard facilities • Container Registry • Kubernetes APIs • Custom Operator • Using generally adopted tools • Helm/Tiller • Prometheus (monitoring metrics) & Grafana Confidential – Oracle Internal/Restricted/Highly Restricted
  114. 114. Kubeapps Review of Oracle OpenWorld & CodeOne 2018 115
  115. 115. Jenkins and Kubernetes • Jenkins can run on Kubernetes itself • Install using Kubeapps Helm Chart • Can leverage Kubernetes • To run build servers (in dynamically spun up Pods) • As deployment target for newly built artifacts • Jenkins X: opinionated • Preconfigured according to CI/CD best practice • Implements GitOps • Preview Environment for Pull Requests Review of Oracle OpenWorld & CodeOne 2018 116
  116. 116. Review of Oracle OpenWorld & CodeOne 2018 117
  117. 117. Acronymonology Review of Oracle OpenWorld & CodeOne 2018 118 OOW 19
  118. 118. Review of Oracle OpenWorld & CodeOne 2018 119
  119. 119. (OOW) Oracle OpenWorld goes global Review of Oracle OpenWorld & CodeOne 2018 120
  120. 120. Review of Oracle OpenWorld & CodeOne 2018 121

×