SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
OSCON
An Introduction to the
Vert.x framework
Wednesday, July 24, 13
Hi Folks! I’m Nate
@zznate
http://github.com/zznate
Wednesday, July 24, 13
So what is Vert.x?
Wednesday, July 24, 13
“...lightweight high-
performance
application platform for
the JVM...”
Wednesday, July 24, 13
“...for the JVM”
Wednesday, July 24, 13
The JVM
- mature concurrency model
- very stable
- heterogeneous
Wednesday, July 24, 13
But most importantly...
Polyglot support!
Wednesday, July 24, 13
You can do a lot in 40
minutes...
Wednesday, July 24, 13
http://vertx.io
(scroll down)
To follow along, see: 
https://github.com/vert-x/vertx-examples 
Wednesday, July 24, 13
“Web apps”
Wednesday, July 24, 13
Wednesday, July 24, 13
Wednesday, July 24, 13
http://web.tradekorea.com/upload_file/prod/emp/200806/main/result_2008_5_5_9_46_15_0_1.jpg
http://www.tradekorea.com/product-detail/P00016493/
Used__Engine_Engines_auto_cars_spare_parts_car_part_motor_junkyard_korea_junkyards_Aircompressor_.html
Wednesday, July 24, 13
http://cache.boston.com/universal/site_graphics/blogs/bigpicture/shuttle_09_01/sts125_2.jpg
http://www.boston.com/bigpicture/2008/09/preparing_to_rescue_hubble.html 
Wednesday, July 24, 13
"We need to make
configuration as easy as
possible so expensive
tools are not needed." 
Wednesday, July 24, 13
Said no enterpirse
software company ever.
Wednesday, July 24, 13
JDBC Module Config:
{
address : "com.bloidonia.jdbcpersistor"
driver : "org.hsqldb.jdbcDriver",
url : "jdbc:hsqldb:mem:test",
username : "someuser",
password : "somepass",
}
https://github.com/timyates/mod-jdbc-persistor
Wednesday, July 24, 13
“New
[Java | jvm-language]
Framework!!”
Wednesday, July 24, 13
http://geek-news.mtv.com//wp-content/uploads/geek/2012/11/picard-facepalm2.jpg
http://geek-news.mtv.com/2012/11/07/star-trek-wedding-proposal/
Wednesday, July 24, 13
But Vert.x was different.
Wednesday, July 24, 13
...for the JVM
Wednesday, July 24, 13
Mature concurrency
model
- vert.x is based on the
Reactor pattern
http://en.wikipedia.org/wiki/Reactor_pattern
Wednesday, July 24, 13
Platform Stability
- HTTP, HTTPS, TCP, SSL
- clients and servers
- All netty 4.0 based
http://netty.io/
Wednesday, July 24, 13
Homogenous
- file system API
- data-driven event bus
Wednesday, July 24, 13
Polyglot
- Container modules
- currently supports:
JavaScript, Ruby, Python,
Groovy, Scala,
Wednesday, July 24, 13
Scalability
Modularity
Developer-focused
Wednesday, July 24, 13
Scalability
Wednesday, July 24, 13
Event Bus
- simple, distributed peer-to-
peer
- pub/sub or point-to-point
- local or distributed**
- ‘data only’ with limited
number of types
Wednesday, July 24, 13
Event Bus
... but it’s a good idea to use
JSON!
(completely language
agnostic - we are building
services and decoupling!)
Wednesday, July 24, 13
“local or distributed”
BONUS:
EventBus can extend directly
to the browser
http://vertx.io/core_manual_java.html#sockjs-eventbus-bridge
Wednesday, July 24, 13
Modularity
Wednesday, July 24, 13
{
address : "com.bloidonia.jdbcpersistor"
driver : "org.hsqldb.jdbcDriver",
url : "jdbc:hsqldb:mem:test",
username : "someuser",
password : "somepass",
}
Wednesday, July 24, 13
Module Benefits
- encapsulation
- distributability
- dynamic
- structured
Wednesday, July 24, 13
Encapsulation
- classpath and dependency
- classloader isolation
(but multiple instances of the
module will share
classloaders)
Wednesday, July 24, 13
Distributability
pushed to/loaded from:
- file system
(contained or shared)
- maven central
- bintray
http://vertx.io/mods_manual.html#how-vertx-locates-modules 
Wednesday, July 24, 13
Dynamic
- automatically downloaded
and installed
- loaded/unloaded at runtime
Wednesday, July 24, 13
Structured
- minimalistic descriptor
syntax
- sub-modules
(can be thought of as "this module
'deploys' these modules" directive)
Wednesday, July 24, 13
Running a module and providing it’s
configuration
Wednesday, July 24, 13
Modules and Concurency
- Worker (blocking)
- Event loop (non-blocking)
Wednesday, July 24, 13
Worker Modules
- single or multi-threaded
- useful for legacy APIs
(ex. JDBC)
Wednesday, July 24, 13
Event Loop Modules
- control number of instances
- instance per core is ideal
Wednesday, July 24, 13
Modules (best for last...)
Wednesday, July 24, 13
Dog food-ing FTW:
Language runtimes are all
module based
Wednesday, July 24, 13
Developer friendly
Wednesday, July 24, 13
Polyglot (cont’d)
Wednesday, July 24, 13
JavaScript
- Rhino
- DynJS: invokeDynamic
based implementation
http://dynjs.org/
https://github.com/vert-x/mod-lang-dynjs
Wednesday, July 24, 13
Simple Programming Model
- just don’t block the event loop!
- reactor pattern
- worker delegates
http://en.wikipedia.org/wiki/Reactor_pattern
http://vertx.io/core_manual_java.html#writing-verticles 
Wednesday, July 24, 13
Provides most common
services
- HTTP/HTTPS
- TCP/SSL
- SockJS
- File system access
(includes sendfile() wrappers)
Wednesday, July 24, 13
Build It: Maven
- archetype integration
- plug-in for launching/running
http://vertx.io/maven_dev.html 
Wednesday, July 24, 13
Build It: Gradle
- template project to clone
http://vertx.io/gradle_dev.html 
Wednesday, July 24, 13
Test It!
- JUnit integration utilities
- Container and IDE integration
(IntelliJ and Eclipse)
Wednesday, July 24, 13
Summary
- General purpose application
platform
- Polyglot development
- Asynchronous APIs
Wednesday, July 24, 13
Vert.x:
Simple. Not Simplistic.
Wednesday, July 24, 13
Questions?
Wednesday, July 24, 13

Más contenido relacionado

La actualidad más candente

Loadays 2013 OpenNebula Fundamentals
Loadays 2013 OpenNebula FundamentalsLoadays 2013 OpenNebula Fundamentals
Loadays 2013 OpenNebula Fundamentals
OpenNebula Project
 
Reactor grails realtime web devoxx 2013
Reactor grails realtime web   devoxx 2013Reactor grails realtime web   devoxx 2013
Reactor grails realtime web devoxx 2013
Stéphane Maldini
 

La actualidad más candente (20)

JavaScript as a Server side language (NodeJS): JSConf 2011, Dhaka
JavaScript as a Server side language (NodeJS): JSConf 2011, DhakaJavaScript as a Server side language (NodeJS): JSConf 2011, Dhaka
JavaScript as a Server side language (NodeJS): JSConf 2011, Dhaka
 
XWiki Aquarium Paris
XWiki Aquarium ParisXWiki Aquarium Paris
XWiki Aquarium Paris
 
Yahoo! scale Node.js
Yahoo! scale Node.jsYahoo! scale Node.js
Yahoo! scale Node.js
 
MySQL Aquarium Paris
MySQL Aquarium ParisMySQL Aquarium Paris
MySQL Aquarium Paris
 
Node.js primer
Node.js primerNode.js primer
Node.js primer
 
Nodejs on 02/22/2012
Nodejs on 02/22/2012Nodejs on 02/22/2012
Nodejs on 02/22/2012
 
Multi-HV OpenStack - It's 2015 already, are we there yet?
Multi-HV OpenStack - It's 2015 already, are we there yet?Multi-HV OpenStack - It's 2015 already, are we there yet?
Multi-HV OpenStack - It's 2015 already, are we there yet?
 
Loadays 2013 OpenNebula Fundamentals
Loadays 2013 OpenNebula FundamentalsLoadays 2013 OpenNebula Fundamentals
Loadays 2013 OpenNebula Fundamentals
 
Building Reactive Microservices with Vert.x
Building Reactive Microservices with Vert.xBuilding Reactive Microservices with Vert.x
Building Reactive Microservices with Vert.x
 
Reactor grails realtime web devoxx 2013
Reactor grails realtime web   devoxx 2013Reactor grails realtime web   devoxx 2013
Reactor grails realtime web devoxx 2013
 
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
 
Bringing ESX Deployments into native OpenStack OVSvApp
Bringing ESX Deployments into native OpenStack OVSvAppBringing ESX Deployments into native OpenStack OVSvApp
Bringing ESX Deployments into native OpenStack OVSvApp
 
OpenNebulaConf 2016 - Evolution of OpenNebula at Netways by Sebastian Saemann...
OpenNebulaConf 2016 - Evolution of OpenNebula at Netways by Sebastian Saemann...OpenNebulaConf 2016 - Evolution of OpenNebula at Netways by Sebastian Saemann...
OpenNebulaConf 2016 - Evolution of OpenNebula at Netways by Sebastian Saemann...
 
Vert.x based microservices with vxms
Vert.x based microservices with vxmsVert.x based microservices with vxms
Vert.x based microservices with vxms
 
Threads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java editionThreads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java edition
 
Introduction to OSGi - Part-1
Introduction to OSGi - Part-1Introduction to OSGi - Part-1
Introduction to OSGi - Part-1
 
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan HoracekOpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
OpenNebula Conf 2014 | Lightning talk: OpenNebula at Etnetera by Jan Horacek
 
Vertx
VertxVertx
Vertx
 
Introduction to node.js aka NodeJS
Introduction to node.js aka NodeJSIntroduction to node.js aka NodeJS
Introduction to node.js aka NodeJS
 
Memcached as a Service for CloudFoundry
Memcached as a Service for CloudFoundryMemcached as a Service for CloudFoundry
Memcached as a Service for CloudFoundry
 

Similar a An Introduction to the Vert.x framework

Building Next-Gen Web Applications with the Spring 3 Web Stack
Building Next-Gen Web Applications with the Spring 3 Web StackBuilding Next-Gen Web Applications with the Spring 3 Web Stack
Building Next-Gen Web Applications with the Spring 3 Web Stack
Jeremy Grelle
 
Storage Plug-ins
Storage Plug-ins Storage Plug-ins
Storage Plug-ins
buildacloud
 
MySQL High Availability: Managing Farms of Distributed Servers (MySQL Fabric)
MySQL High Availability: Managing Farms of Distributed Servers (MySQL Fabric)MySQL High Availability: Managing Farms of Distributed Servers (MySQL Fabric)
MySQL High Availability: Managing Farms of Distributed Servers (MySQL Fabric)
Alfranio Júnior
 
Building a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQueryBuilding a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQuery
Tatsuhiko Miyagawa
 

Similar a An Introduction to the Vert.x framework (20)

Building Next-Gen Web Applications with the Spring 3 Web Stack
Building Next-Gen Web Applications with the Spring 3 Web StackBuilding Next-Gen Web Applications with the Spring 3 Web Stack
Building Next-Gen Web Applications with the Spring 3 Web Stack
 
JRuby, Ruby, Rails and You on the Cloud
JRuby, Ruby, Rails and You on the CloudJRuby, Ruby, Rails and You on the Cloud
JRuby, Ruby, Rails and You on the Cloud
 
Environment for training models
Environment for training modelsEnvironment for training models
Environment for training models
 
lecture5
lecture5lecture5
lecture5
 
lecture5
lecture5lecture5
lecture5
 
Back to the future with Java 7 (Geekout June/2011)
Back to the future with Java 7 (Geekout June/2011)Back to the future with Java 7 (Geekout June/2011)
Back to the future with Java 7 (Geekout June/2011)
 
CloudStack Meetup Santa Clara
CloudStack Meetup Santa Clara CloudStack Meetup Santa Clara
CloudStack Meetup Santa Clara
 
Storage Plug-ins
Storage Plug-ins Storage Plug-ins
Storage Plug-ins
 
Rock Overview
Rock OverviewRock Overview
Rock Overview
 
Doing Drupal: Quick Start Deployments via Distributions
Doing Drupal: Quick Start Deployments via DistributionsDoing Drupal: Quick Start Deployments via Distributions
Doing Drupal: Quick Start Deployments via Distributions
 
The Diabolical Developer's Guide to Surviving Java 9
The Diabolical Developer's Guide to Surviving Java 9The Diabolical Developer's Guide to Surviving Java 9
The Diabolical Developer's Guide to Surviving Java 9
 
Fosdem i inne konferencje
Fosdem i inne konferencjeFosdem i inne konferencje
Fosdem i inne konferencje
 
iSCSI Target Support for Ceph
iSCSI Target Support for Ceph iSCSI Target Support for Ceph
iSCSI Target Support for Ceph
 
Евгений Бова: "Modularity in Java: introduction to Jigsaw through the prism o...
Евгений Бова: "Modularity in Java: introduction to Jigsaw through the prism o...Евгений Бова: "Modularity in Java: introduction to Jigsaw through the prism o...
Евгений Бова: "Modularity in Java: introduction to Jigsaw through the prism o...
 
Implementing Quality on Java projects
Implementing Quality on Java projectsImplementing Quality on Java projects
Implementing Quality on Java projects
 
Kharkivpy#3: Javascript and Python backend
Kharkivpy#3: Javascript and Python backendKharkivpy#3: Javascript and Python backend
Kharkivpy#3: Javascript and Python backend
 
MySQL High Availability: Managing Farms of Distributed Servers (MySQL Fabric)
MySQL High Availability: Managing Farms of Distributed Servers (MySQL Fabric)MySQL High Availability: Managing Farms of Distributed Servers (MySQL Fabric)
MySQL High Availability: Managing Farms of Distributed Servers (MySQL Fabric)
 
Building a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQueryBuilding a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQuery
 
Le Tour de xUnit
Le Tour de xUnitLe Tour de xUnit
Le Tour de xUnit
 
Commit to excellence - Java in containers
Commit to excellence - Java in containersCommit to excellence - Java in containers
Commit to excellence - Java in containers
 

Más de zznate

Strata west 2012_java_cassandra
Strata west 2012_java_cassandraStrata west 2012_java_cassandra
Strata west 2012_java_cassandra
zznate
 
Introduction to apache_cassandra_for_developers-lhg
Introduction to apache_cassandra_for_developers-lhgIntroduction to apache_cassandra_for_developers-lhg
Introduction to apache_cassandra_for_developers-lhg
zznate
 

Más de zznate (18)

Advanced Apache Cassandra Operations with JMX
Advanced Apache Cassandra Operations with JMXAdvanced Apache Cassandra Operations with JMX
Advanced Apache Cassandra Operations with JMX
 
Hardening cassandra q2_2016
Hardening cassandra q2_2016Hardening cassandra q2_2016
Hardening cassandra q2_2016
 
Seattle C* Meetup: Hardening cassandra for compliance or paranoia
Seattle C* Meetup: Hardening cassandra for compliance or paranoiaSeattle C* Meetup: Hardening cassandra for compliance or paranoia
Seattle C* Meetup: Hardening cassandra for compliance or paranoia
 
Software Development with Apache Cassandra
Software Development with Apache CassandraSoftware Development with Apache Cassandra
Software Development with Apache Cassandra
 
Hardening cassandra for compliance or paranoia
Hardening cassandra for compliance or paranoiaHardening cassandra for compliance or paranoia
Hardening cassandra for compliance or paranoia
 
Successful Software Development with Apache Cassandra
Successful Software Development with Apache CassandraSuccessful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
 
Stampede con 2014 cassandra in the real world
Stampede con 2014   cassandra in the real worldStampede con 2014   cassandra in the real world
Stampede con 2014 cassandra in the real world
 
Intravert atx meetup_condensed
Intravert atx meetup_condensedIntravert atx meetup_condensed
Intravert atx meetup_condensed
 
Apachecon cassandra transport
Apachecon cassandra transportApachecon cassandra transport
Apachecon cassandra transport
 
Oscon 2012 tdd_cassandra
Oscon 2012 tdd_cassandraOscon 2012 tdd_cassandra
Oscon 2012 tdd_cassandra
 
Strata west 2012_java_cassandra
Strata west 2012_java_cassandraStrata west 2012_java_cassandra
Strata west 2012_java_cassandra
 
Nyc summit intro_to_cassandra
Nyc summit intro_to_cassandraNyc summit intro_to_cassandra
Nyc summit intro_to_cassandra
 
Meetup cassandra sfo_jdbc
Meetup cassandra sfo_jdbcMeetup cassandra sfo_jdbc
Meetup cassandra sfo_jdbc
 
Meetup cassandra for_java_cql
Meetup cassandra for_java_cqlMeetup cassandra for_java_cql
Meetup cassandra for_java_cql
 
Introduciton to Apache Cassandra for Java Developers (JavaOne)
Introduciton to Apache Cassandra for Java Developers (JavaOne)Introduciton to Apache Cassandra for Java Developers (JavaOne)
Introduciton to Apache Cassandra for Java Developers (JavaOne)
 
Introduction to apache_cassandra_for_developers-lhg
Introduction to apache_cassandra_for_developers-lhgIntroduction to apache_cassandra_for_developers-lhg
Introduction to apache_cassandra_for_developers-lhg
 
Introduction to apache_cassandra_for_develope
Introduction to apache_cassandra_for_developeIntroduction to apache_cassandra_for_develope
Introduction to apache_cassandra_for_develope
 
Hector v2: The Second Version of the Popular High-Level Java Client for Apach...
Hector v2: The Second Version of the Popular High-Level Java Client for Apach...Hector v2: The Second Version of the Popular High-Level Java Client for Apach...
Hector v2: The Second Version of the Popular High-Level Java Client for Apach...
 

Último

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Último (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 

An Introduction to the Vert.x framework