SlideShare una empresa de Scribd logo
1 de 45
Descargar para leer sin conexión
Spring GraalVM Native Image
- 2019/12 -
2019 12 18
Spring Fest 2019
NTT
•
• NTT 2
• Software Engineering, Computer Science
• Spring
– JSUG
– (Spring I/O) (SpringOne) 2 5
–
– Spring
• Native Image
– Native Image
• 3
– Native Image
• Spring Native Image
– Spring Native Image
2019/12
Native Image
GraalVM Native Image
GraalVM Native Image allows you to ahead-of-time compile Java
code to a standalone executable, called a native image.
https://graalvm.org/docs/reference-manual/native-image
• Java JVM
• 5 5
– linux : .so
– macOS : .dylib
– Windows : .dll
2019 12 Early Adopter Technology
$ javac Hello.java
$ native-image -cp . Hello
$ ./hello
Hello world!
AOT
JIT(Just-in-Time) AOT(Ahead-of-Time)
6 6 JIT 6
Java 6
AOT
Java
.java.java.java
.class.class.class
javac
JVM
JIT 6
6
6
6
6
6
6
6
6
6
66
.java.java.java
.class.class.class
javac
AOT 6
6
6
6
6
Native Image
DEMO
Native Image –
Native Image
Native Image –
import org.graalvm.nativeimage.IsolateThread;
import org.graalvm.nativeimage.c.function.CEntryPoint;
public class Shared{
@CEntryPoint(name="increment")
public static int increment(IsolateThread thread, int num){
return num+1;
}
}
$ ls
Shared.class Shared.java libincrement.dylib libincrement.h
libincrement_dynamic.h graal_isolate.h graal_isolate_dynamic.h
Native Image
#include<libincrement>
C
Native Image
JVM
• JIT
• AOT *
* GraalVM Enterprise Edition Profile-guided Optimizations 0
AdoptOpenJDK 11.0.5 Native Image (GraalVM EE 19.3.0)
https://nowokay.hatenablog.com/entry/2019/06/27/045352
(GraalVM 1 – Hatena)
CE EE
0
10
20
30
40
50
60
70
80
AdoptOpenJDK GraalVMEE (J) GraalVMCE (J) GraalVMEE (A) GraalVMCE (A)
MacBook Pro (13-inch, late 2016, 2.9GHz Core i5, 16GB RAM) 3
JIT AOT (Native Image)
CE Native Image
EE Native Image
JIT
Pros
– JVM
–
–
– 2
Cons
–
– 1
– 2
Native Image Pros/Cons
1 4 4 …
• 4
• Java1
• JVM
AOT
!
Closed-World Assumption
To be able to build a highly optimized native executable, we run an
aggressive static analysis that requires a closed-world assumption, …
https://graalvm.org/docs/reference-manual/native-image
Closed-World Assumption
5 1 1
Native image
6 • 1
• 6 6
• CPU OS
Native image
7 7
1 7
• 7
•
-H:+PrintAnalysisCallTree
8
– Substrate VM*
– 1
• Override
–
* JVM GC
Native image
1
•
9 1
•
• static
• Native Image
Native image
2
0
CC
0
Native image
1
1
1
2
Java (1/2)
https://github.com/oracle/graal/blob/master/substratevm/LIMITATIONS.md
2
JNI
Unsafe
InvokeDynamic / MethodHandler
Lambda
Java (2/2)
https://github.com/oracle/graal/blob/master/substratevm/LIMITATIONS.md
Synchronized
2
Reference
identifyHashCode
3
JVMTI, JMX, VM
JCA
4 4 4
Class Method 4
2
2 4 4
→ “ReflectTarget” (“getMessage()”)
Class[] classes = new Class[0];
String message =
(String)Class.forName("ReflectTarget")
.getMethod("getMessage",classes)
.invoke(null);
[
{
"name" : "java.lang.Class",
"allDeclaredConstructors" : true,
"allPublicConstructors" : true,
"allDeclaredMethods" : true,
"allPublicMethods" : true,
"allDeclaredClasses" : true,
"allPublicClasses" : true
},
{
"name" : "java.lang.String",
"fields" : [
{ "name" : "value", "allowWrite" : true },
{ "name" : "hash" }
],
2 2
2 2
2
-H:ReflectionConfigurationFiles json 5
java.lang.reflect.Proxy
Class[] ifs = {IF.class};
Proxy.getProxyClass(Main.class.getClassLoader(), ifs);
2 6
2
→ “IF”
2 2 7
→ 2 2
-H:DynamicProxyConfigurationFiles json
[
["java.lang.AutoCloseable", "java.util.Comparator"],
["java.util.Comparator"],
["java.util.List"]
]
7
static
8 8
public class Hoge{
static {
…
}
Native Image
static 8Native Image 8
Native Image
1. Native Image 8
2. *
2 8
* --initialize-at-run-time= xxx.yyy.Hoge, …
3. 2. 8
2 8
Class / ClassLoader jar
Hoge.class
.getClassLoader()
.getResource("fuga.txt");
2 Native Image
getResource null
-H:ResourceConfigurationFiles 9 json
"resources": [
{"pattern": ”hoge/.*"},
{"pattern": ”path/to/class/Hoge.class"},
…
• 0
• Native Image Java
• 0 03 0
Spring Native Image
Spring
Spring
@Component("someBean")
public class Hoge{
public @interface Component {
String value() default "";
3
Bean 2
2
Spring
Spring
<<Interface>>
BeanIF
@Component
BeanImpl
@Component
Consumer
@Autowired
BeanIFProxy
Advice1 Advice2 Advice3
Bean 3
Bean weaving
Native Image
https://github.com/spring-projects/spring-framework/issues/22968
Create a Graal native-image support feature for Spring #22968
Feature
org.graalvm.nativeimage.hosted.Feature
duringSetup
beforeAnalysis
duringAnalysis 5
afterAnalysis
beforeCompilation 3 5
afterCompilation 5
afterHeapLayout Native Image
beforeImageWrite Native Image
afterImageWrite Native Image
cleanup
• Native Image 5 3
•
Spring 3 Native Image
Spring Feature
Spring Feature
https://github.com/spring-projects-experimental/spring-graal-native
Experimental
4 6
• Reflection Handler
• Dynamic Proxy Handler
• Initialization Handler
• Resource Handler
Spring
1. Native Image Generator 7 3
2. Handler
Reflection Handler
reflect.json
Spring Feature
…
{
"name":
"org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator",
"allDeclaredConstructors": true,
"allDeclaredMethods": true
},
…
Dynamic Proxy Handler
Spring
1. Native Image Generator
8 3
2. Handler 8
3
proxies.json
Spring Feature 3 8
[
…
["org.springframework.web.bind.annotation.RequestMapping"],
["org.springframework.web.bind.annotation.ResponseStatus"],
["org.springframework.web.bind.annotation.RequestBody"],
…
]
8
8 3
3
Initialization Handler
Spring
Native Image Generator 9 3 3
initialization.json
Spring Feature 3
{
"runtimeInitialization":
[
…
{"package": "io.netty.handler.codec.http2"},
{"class": "reactor.netty.tcp.TcpClientSecure"},
…
],
"buildTimeInitialization":
[
{"package": "org.springframework.core.env"},
{"class": "org.springframework.util.unit.DataUnit"},
…
Resource Handler
Spring
1. Native Image Generator 4
0
2. spring.factories
3. spring.components
resources.json
Spring Feature 04
{
"resources": [
{"pattern": "db/.*"},
{"pattern": "messages/.*"},
{"pattern": "static/.*"},
{"pattern": "templates/.*"},
…
Spring Boot 4
Resource Handler spring.factories
spring.factories
Spring Boot 4 Auto Configuration 1
# Auto Configuration Import Filters
org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=¥
org.springframework.boot.autoconfigure.condition.OnBeanCondition,¥
org.springframework.boot.autoconfigure.condition.OnClassCondition,¥
org.springframework.boot.autoconfigure.condition.OnWebApplicationCondition
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=¥
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,¥
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,¥
• spring.factories Reflection Handler
• spring.factories Auto Configuration
•
Auto Configuration spring.factories
Resource Handler
Resource Handler spring.components
spring.components
Spring-Context-Indexer 4
• spring.components 2
spring.components
• spring.components Reflection Handler
• spring.components Dynamic Proxy Handler
2 4
Resource Handler
com.example.commandlinerunner.CLR=org.springframework.stereotype.Component
com.example.commandlinerunner.CommandlinerunnerApplication=org.springframework.stereotype.Component
Spring Feature
Spring Boot
uber-jar
class Spring Feature
Native Image
3 4 class Spring Feature
Spring Native Image
DEMO
• Native Image 4
• Spring Java
• Spring Native
Image 5
– Spring Framework 5.3

Más contenido relacionado

La actualidad más candente

Hadoop User Group EU 2014
Hadoop User Group EU 2014Hadoop User Group EU 2014
Hadoop User Group EU 2014
cwensel
 
Agile web development Groovy Grails with Netbeans
Agile web development Groovy Grails with NetbeansAgile web development Groovy Grails with Netbeans
Agile web development Groovy Grails with Netbeans
Carol McDonald
 

La actualidad más candente (20)

Scaling Your Cache
Scaling Your CacheScaling Your Cache
Scaling Your Cache
 
Meetup cassandra sfo_jdbc
Meetup cassandra sfo_jdbcMeetup cassandra sfo_jdbc
Meetup cassandra sfo_jdbc
 
Clustering your Application with Hazelcast
Clustering your Application with HazelcastClustering your Application with Hazelcast
Clustering your Application with Hazelcast
 
Develop Python Applications with MySQL Connector/Python
Develop Python Applications with MySQL Connector/PythonDevelop Python Applications with MySQL Connector/Python
Develop Python Applications with MySQL Connector/Python
 
Http4s, Doobie and Circe: The Functional Web Stack
Http4s, Doobie and Circe: The Functional Web StackHttp4s, Doobie and Circe: The Functional Web Stack
Http4s, Doobie and Circe: The Functional Web Stack
 
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングXitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
 
Getting started with Elasticsearch and .NET
Getting started with Elasticsearch and .NETGetting started with Elasticsearch and .NET
Getting started with Elasticsearch and .NET
 
Beyond parallelize and collect - Spark Summit East 2016
Beyond parallelize and collect - Spark Summit East 2016Beyond parallelize and collect - Spark Summit East 2016
Beyond parallelize and collect - Spark Summit East 2016
 
Polyglot Persistence
Polyglot PersistencePolyglot Persistence
Polyglot Persistence
 
Drools 6 deep dive
Drools 6 deep diveDrools 6 deep dive
Drools 6 deep dive
 
Shooting the Rapids
Shooting the RapidsShooting the Rapids
Shooting the Rapids
 
PostgreSQL Open SV 2018
PostgreSQL Open SV 2018PostgreSQL Open SV 2018
PostgreSQL Open SV 2018
 
The Year of JRuby - RubyC 2018
The Year of JRuby - RubyC 2018The Year of JRuby - RubyC 2018
The Year of JRuby - RubyC 2018
 
Intro to Scala.js - Scala UG Cologne
Intro to Scala.js - Scala UG CologneIntro to Scala.js - Scala UG Cologne
Intro to Scala.js - Scala UG Cologne
 
Hadoop User Group EU 2014
Hadoop User Group EU 2014Hadoop User Group EU 2014
Hadoop User Group EU 2014
 
Cold Hard Cache
Cold Hard CacheCold Hard Cache
Cold Hard Cache
 
NoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love StoryNoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love Story
 
Agile web development Groovy Grails with Netbeans
Agile web development Groovy Grails with NetbeansAgile web development Groovy Grails with Netbeans
Agile web development Groovy Grails with Netbeans
 
Python database interfaces
Python database  interfacesPython database  interfaces
Python database interfaces
 
Parallel-Ready Java Code: Managing Mutation in an Imperative Language
Parallel-Ready Java Code: Managing Mutation in an Imperative LanguageParallel-Ready Java Code: Managing Mutation in an Imperative Language
Parallel-Ready Java Code: Managing Mutation in an Imperative Language
 

Similar a SpringとGrarlVM Native Image -2019/12-

Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-1-Ajax.pptx
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-1-Ajax.pptxMicrosoft PowerPoint - &lt;b>jQuery&lt;/b>-1-Ajax.pptx
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-1-Ajax.pptx
tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
tutorialsruby
 
Gradleintroduction 111010130329-phpapp01
Gradleintroduction 111010130329-phpapp01Gradleintroduction 111010130329-phpapp01
Gradleintroduction 111010130329-phpapp01
Tino Isnich
 
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
Nick Sieger
 

Similar a SpringとGrarlVM Native Image -2019/12- (20)

Gradle
GradleGradle
Gradle
 
Json generation
Json generationJson generation
Json generation
 
Atlassian Groovy Plugins
Atlassian Groovy PluginsAtlassian Groovy Plugins
Atlassian Groovy Plugins
 
Having Fun with Play
Having Fun with PlayHaving Fun with Play
Having Fun with Play
 
Groovy - Grails as a modern scripting language for Web applications
Groovy - Grails as a modern scripting language for Web applicationsGroovy - Grails as a modern scripting language for Web applications
Groovy - Grails as a modern scripting language for Web applications
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
 
Oscon Java Testing on the Fast Lane
Oscon Java Testing on the Fast LaneOscon Java Testing on the Fast Lane
Oscon Java Testing on the Fast Lane
 
Eric Lafortune - The Jack and Jill build system
Eric Lafortune - The Jack and Jill build systemEric Lafortune - The Jack and Jill build system
Eric Lafortune - The Jack and Jill build system
 
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-1-Ajax.pptx
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-1-Ajax.pptxMicrosoft PowerPoint - &lt;b>jQuery&lt;/b>-1-Ajax.pptx
Microsoft PowerPoint - &lt;b>jQuery&lt;/b>-1-Ajax.pptx
 
jQuery-1-Ajax
jQuery-1-AjaxjQuery-1-Ajax
jQuery-1-Ajax
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
jQuery-1-Ajax
jQuery-1-AjaxjQuery-1-Ajax
jQuery-1-Ajax
 
JCConf2019: Next Step of JavaScript on Java
JCConf2019: Next Step of JavaScript on JavaJCConf2019: Next Step of JavaScript on Java
JCConf2019: Next Step of JavaScript on Java
 
Polyglot Adventures for the Modern Java Developer #javaone2017
Polyglot Adventures for the Modern Java Developer #javaone2017Polyglot Adventures for the Modern Java Developer #javaone2017
Polyglot Adventures for the Modern Java Developer #javaone2017
 
Polyglot Adventures for the Modern Java Developer
Polyglot Adventures for the Modern Java DeveloperPolyglot Adventures for the Modern Java Developer
Polyglot Adventures for the Modern Java Developer
 
Gradle Introduction
Gradle IntroductionGradle Introduction
Gradle Introduction
 
Gradleintroduction 111010130329-phpapp01
Gradleintroduction 111010130329-phpapp01Gradleintroduction 111010130329-phpapp01
Gradleintroduction 111010130329-phpapp01
 
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
 
Gradle: The Build system you have been waiting for
Gradle: The Build system you have been waiting forGradle: The Build system you have been waiting for
Gradle: The Build system you have been waiting for
 
Jan Stępień - GraalVM: Fast, Polyglot, Native - Codemotion Berlin 2018
Jan Stępień - GraalVM: Fast, Polyglot, Native - Codemotion Berlin 2018Jan Stępień - GraalVM: Fast, Polyglot, Native - Codemotion Berlin 2018
Jan Stępień - GraalVM: Fast, Polyglot, Native - Codemotion Berlin 2018
 

Más de Takuya Iwatsuka

Más de Takuya Iwatsuka (13)

Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
 
SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告SpringOne Platform 2018 全体報告
SpringOne Platform 2018 全体報告
 
Spring tools4
Spring tools4Spring tools4
Spring tools4
 
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Spring I/O 2018 報告 RESTDocs RAML, Cloud ContractSpring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
 
SpringOne Platform 2017報告会 メインプロジェクトのアップデート
SpringOne Platform 2017報告会 メインプロジェクトのアップデートSpringOne Platform 2017報告会 メインプロジェクトのアップデート
SpringOne Platform 2017報告会 メインプロジェクトのアップデート
 
Spring Security 5.0 解剖速報
Spring Security 5.0 解剖速報Spring Security 5.0 解剖速報
Spring Security 5.0 解剖速報
 
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Spring I/O 2017 報告 ThymeleafのWebFlux対応Spring I/O 2017 報告 ThymeleafのWebFlux対応
Spring I/O 2017 報告 ThymeleafのWebFlux対応
 
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
 
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular SessionsSpring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
 
Spring social の基礎
Spring social の基礎Spring social の基礎
Spring social の基礎
 
Password validation with Passay
Password validation with PassayPassword validation with Passay
Password validation with Passay
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 

Último

VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Christo Ananth
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Dr.Costas Sachpazis
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Último (20)

VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
 
UNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular ConduitsUNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular Conduits
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 
Online banking management system project.pdf
Online banking management system project.pdfOnline banking management system project.pdf
Online banking management system project.pdf
 
Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...Call for Papers - International Journal of Intelligent Systems and Applicatio...
Call for Papers - International Journal of Intelligent Systems and Applicatio...
 
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
 
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdf
 
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELLPVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
 
Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
Vivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design SpainVivazz, Mieres Social Housing Design Spain
Vivazz, Mieres Social Housing Design Spain
 
NFPA 5000 2024 standard .
NFPA 5000 2024 standard                                  .NFPA 5000 2024 standard                                  .
NFPA 5000 2024 standard .
 
data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdf
 

SpringとGrarlVM Native Image -2019/12-