{"id":30570,"date":"2020-04-22T10:00:17","date_gmt":"2020-04-22T17:00:17","guid":{"rendered":""},"modified":"2024-01-08T22:34:48","modified_gmt":"2024-01-09T06:34:48","slug":"open-sourcing-the-java-language-extension-for-sql-server","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/","title":{"rendered":"Open sourcing the Java language extension for SQL Server"},"content":{"rendered":"<p>With over 20 years of existence, Java is still <a href=\"https:\/\/www.tiobe.com\/tiobe-index\/\">one of the most popular<\/a> programming languages and is used in many enterprise applications.<\/p>\n<p>In SQL Server 2019, we added a Java language extension, which enables secure execution of Java programs in the context of a SQL Server query. This enables a wide range of scenarios such as performing advanced text and data preparation tasks, reaching out to external APIs to get data and also training machine learning models and model scoring.<\/p>\n<p><strong>Today, we&#8217;re thrilled to announce that we are <\/strong><a href=\"https:\/\/github.com\/microsoft\/sql-server-language-extensions\/tree\/master\/language-extensions\/java\"><strong>open sourcing the Java language extension for SQL Server<\/strong><\/a><strong> on GitHub.<\/strong><\/p>\n<p>This extension is the first example of using an evolved programming language extensibility architecture which allows integration with a <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/language-extensions\/language-extensions-overview?view=sql-server-ver15\">new type of language extensions<\/a>. This new architecture gives customers the freedom to bring their own runtime and execute programs using that runtime in SQL Server while leveraging the existing security and governance that the SQL Server programming language extensibility architecture provides.<\/p>\n<p>Choosing which runtime to use does provide the flexibility to choose different distributions of Java, and as newer versions of the Java runtime get released, this architecture will make it easier to upgrade the Java runtime. However, this freedom may raise some questions around support. Enterprises need to have a support contract in place for their Java runtime. The answer, in this case, is that <a href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2019\/07\/24\/free-supported-java-in-sql-server-2019-is-now-available\/\">we&#8217;ve got you covered<\/a>. <strong>Thanks to a partnership between Microsoft and Azul, all Azure and SQL Server customers can use Azul\u2019s Zulu for Azure \u2013 Enterprise distribution of Java <\/strong><strong>for free with support jointly provided by Microsoft and Azul. <\/strong>This supported distribution of Java is <em>included<\/em> in SQL Server out of the box!<\/p>\n<p>Now that support is not an issue, let&#8217;s look at what use cases Java can enable inside SQL Server. Bringing Java workloads closer to the data opens a variety of possibilities:<\/p>\n<ul>\n<li>This extends the TSQL surface area to better handle use cases involving regular expressions, string handling, and NLP support.<\/li>\n<li>This functionality also helps in migration scenarios from Oracle, where applications rely on Oracle Java procs in the database. With the ability to execute Java inside stored procedures in SQL Server, there is now a path for enabling Java application migrations to SQL Server.<\/li>\n<li>Java application development teams that leverage SQL Server as backend storage can now even embed Java code in stored procedures which enables pushing business logic down into the database for better performance.<\/li>\n<li>Furthermore, this will help avoid unnecessary data movement and latency when data must be retrieved from SQL Server and moved into the app tier to do the business logic processing.<\/li>\n<\/ul>\n<h2>Why Open Source?<\/h2>\n<p>The Java language extension leverages the Extensibility Framework API for SQL Server to communicate and exchange data with SQL Server. This <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/language-extensions\/reference\/extensibility-framework-api?view=sql-server-ver15\">API has been publicly documented<\/a>. The API in combination with the <a href=\"https:\/\/github.com\/microsoft\/sql-server-language-extensions\/tree\/master\/language-extensions\/java\">open source code of the Java language extension<\/a> provides an end to end example implementation of how a programming language extension can be built. This makes it easier for additional programming language extensions to be built for SQL Server by the community. What language extensions would you like to see?<\/p>\n<h2>Get started<\/h2>\n<p>Whether you are interested in creating your own language extension or just using the Java language extension for SQL Server, <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/language-extensions\/tutorials\/search-for-string-using-regular-expressions-in-java?view=sql-server-ver15\">here is a tutorial<\/a> to get you started.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>With over 20 years of existence, Java is still one of the most popular programming languages and is used in many enterprise applications. In SQL Server 2019, we added a Java language extension, which enables secure execution of Java programs in the context of a SQL Server query.<\/p>\n","protected":false},"author":5562,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[],"product":[5227,2536],"content-type":[2448],"topic":[2466],"coauthors":[2625],"class_list":["post-30570","post","type-post","status-publish","format-standard","hentry","product-sql","product-sql-server-2019","content-type-updates","topic-developer"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Open sourcing the Java language extension for SQL Server - Microsoft SQL Server Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Open sourcing the Java language extension for SQL Server - Microsoft SQL Server Blog\" \/>\n<meta property=\"og:description\" content=\"With over 20 years of existence, Java is still one of the most popular programming languages and is used in many enterprise applications. In SQL Server 2019, we added a Java language extension, which enables secure execution of Java programs in the context of a SQL Server query.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft SQL Server Blog\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/sqlserver\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-22T17:00:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-09T06:34:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/08\/cropped-microsoft_logo_element.png\" \/>\n\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nellie Gustafsson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SQLServer\" \/>\n<meta name=\"twitter:site\" content=\"@SQLServer\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nellie Gustafsson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/\"},\"author\":[{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/nellie-gustafsson\/\",\"@type\":\"Person\",\"@name\":\"Nellie Gustafsson\"}],\"headline\":\"Open sourcing the Java language extension for SQL Server\",\"datePublished\":\"2020-04-22T17:00:17+00:00\",\"dateModified\":\"2024-01-09T06:34:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/\"},\"wordCount\":560,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/\",\"name\":\"Open sourcing the Java language extension for SQL Server - Microsoft SQL Server Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website\"},\"datePublished\":\"2020-04-22T17:00:17+00:00\",\"dateModified\":\"2024-01-09T06:34:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Open sourcing the Java language extension for SQL Server\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\",\"name\":\"Microsoft SQL Server Blog\",\"description\":\"Official News from Microsoft\u2019s Information Platform\",\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\",\"name\":\"Microsoft SQL Server Blog\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":259,\"height\":194,\"caption\":\"Microsoft SQL Server Blog\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"http:\/\/www.facebook.com\/sqlserver\",\"https:\/\/x.com\/SQLServer\",\"https:\/\/www.youtube.com\/user\/MSCloudOS\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Open sourcing the Java language extension for SQL Server - Microsoft SQL Server Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/","og_locale":"en_US","og_type":"article","og_title":"Open sourcing the Java language extension for SQL Server - Microsoft SQL Server Blog","og_description":"With over 20 years of existence, Java is still one of the most popular programming languages and is used in many enterprise applications. In SQL Server 2019, we added a Java language extension, which enables secure execution of Java programs in the context of a SQL Server query.","og_url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/","og_site_name":"Microsoft SQL Server Blog","article_publisher":"http:\/\/www.facebook.com\/sqlserver","article_published_time":"2020-04-22T17:00:17+00:00","article_modified_time":"2024-01-09T06:34:48+00:00","og_image":[{"width":512,"height":512,"url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/08\/cropped-microsoft_logo_element.png","type":"image\/png"}],"author":"Nellie Gustafsson","twitter_card":"summary_large_image","twitter_creator":"@SQLServer","twitter_site":"@SQLServer","twitter_misc":{"Written by":"Nellie Gustafsson","Est. reading time":"2 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/nellie-gustafsson\/","@type":"Person","@name":"Nellie Gustafsson"}],"headline":"Open sourcing the Java language extension for SQL Server","datePublished":"2020-04-22T17:00:17+00:00","dateModified":"2024-01-09T06:34:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/"},"wordCount":560,"commentCount":0,"publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization"},"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/","name":"Open sourcing the Java language extension for SQL Server - Microsoft SQL Server Blog","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website"},"datePublished":"2020-04-22T17:00:17+00:00","dateModified":"2024-01-09T06:34:48+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2020\/04\/22\/open-sourcing-the-java-language-extension-for-sql-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/"},{"@type":"ListItem","position":2,"name":"Open sourcing the Java language extension for SQL Server"}]},{"@type":"WebSite","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/","name":"Microsoft SQL Server Blog","description":"Official News from Microsoft\u2019s Information Platform","publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization","name":"Microsoft SQL Server Blog","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":259,"height":194,"caption":"Microsoft SQL Server Blog"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/"},"sameAs":["http:\/\/www.facebook.com\/sqlserver","https:\/\/x.com\/SQLServer","https:\/\/www.youtube.com\/user\/MSCloudOS"]}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/30570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/users\/5562"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/comments?post=30570"}],"version-history":[{"count":0,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/30570\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/media?parent=30570"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/post_tag?post=30570"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/product?post=30570"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/content-type?post=30570"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/topic?post=30570"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/coauthors?post=30570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}