{"id":20207807,"url":"https://github.com/exasol/java-udf-startup-time-improver","last_synced_at":"2025-03-03T10:15:00.296Z","repository":{"id":42990607,"uuid":"465645309","full_name":"exasol/java-udf-startup-time-improver","owner":"exasol","description":"Tool for improving the start up time of Java UDFs.","archived":false,"fork":false,"pushed_at":"2024-03-11T08:01:35.000Z","size":88,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-01-13T21:09:25.680Z","etag":null,"topics":["exasol-integration","udf"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exasol.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-03T09:10:14.000Z","updated_at":"2024-03-11T07:42:47.000Z","dependencies_parsed_at":"2024-11-14T05:32:33.564Z","dependency_job_id":"ea8fce29-9ace-4299-97c9-88c3d25adb2d","html_url":"https://github.com/exasol/java-udf-startup-time-improver","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exasol%2Fjava-udf-startup-time-improver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exasol%2Fjava-udf-startup-time-improver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exasol%2Fjava-udf-startup-time-improver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exasol%2Fjava-udf-startup-time-improver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exasol","download_url":"https://codeload.github.com/exasol/java-udf-startup-time-improver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241644559,"owners_count":19996179,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["exasol-integration","udf"],"created_at":"2024-11-14T05:32:22.430Z","updated_at":"2025-03-03T10:15:00.274Z","avatar_url":"https://github.com/exasol.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Java UDF Startup Time Improver\n\n[![Build Status](https://github.com/exasol/java-udf-startup-time-improver/actions/workflows/ci-build.yml/badge.svg)](https://github.com/exasol/java-udf-startup-time-improver/actions/workflows/ci-build.yml)\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Ajava-udf-startup-time-improver\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=com.exasol%3Ajava-udf-startup-time-improver)\n\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Ajava-udf-startup-time-improver\u0026metric=security_rating)](https://sonarcloud.io/dashboard?id=com.exasol%3Ajava-udf-startup-time-improver)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Ajava-udf-startup-time-improver\u0026metric=reliability_rating)](https://sonarcloud.io/dashboard?id=com.exasol%3Ajava-udf-startup-time-improver)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Ajava-udf-startup-time-improver\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=com.exasol%3Ajava-udf-startup-time-improver)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Ajava-udf-startup-time-improver\u0026metric=sqale_index)](https://sonarcloud.io/dashboard?id=com.exasol%3Ajava-udf-startup-time-improver)\n\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Ajava-udf-startup-time-improver\u0026metric=code_smells)](https://sonarcloud.io/dashboard?id=com.exasol%3Ajava-udf-startup-time-improver)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Ajava-udf-startup-time-improver\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=com.exasol%3Ajava-udf-startup-time-improver)\n[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Ajava-udf-startup-time-improver\u0026metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=com.exasol%3Ajava-udf-startup-time-improver)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Ajava-udf-startup-time-improver\u0026metric=ncloc)](https://sonarcloud.io/dashboard?id=com.exasol%3Ajava-udf-startup-time-improver)\n\nThe Java UDF startup time improver is a tool that optimizes Java UDF. It does so by preloading the Java classes and writing them into a class dump on BucketFS. Then it replaces the script definition with a different one that declares a JVM-option which instructs the JVM to use the dump.\n\n**This tool can only optimize projects that are prepared for it.** To find out if a certain project is already prepared for being optimized look out for the badge \"Prepared for Java UDF startup time improver\" in the project's readme.\n\nThis tool only has an impact when used with Exasol version 7.0.17 and 7.1.7. On older version it has no effect.\n\n## Installation\n\n1. Download the latest release of this project.\n2. Upload the jar to BucketFS.\n3. Run the [installation script](src/install.sql)\n   The script contains the path `/buckets/bfsdefault/default/java-udf-startup-time-improver.jar`. Please adapt it to point to the correct Bucket and jar.\n\n## Usage\n\nCreate a connection with the write-password of the BucketFS where the improver can write the class-dump to.\n\n```sql\nCREATE CONNECTION BFS_CONNECTION\nTO ''\nUSER ''\nIDENTIFIED BY '\u003cBucketFsWritePassword\u003e';\n```\n\nDownload the class list for the UDF / adapter script that you want to optimize. You can find file `classes.lst` attached to the GitHub release. Now upload the file to a bucket in BucketFS.\n\nRun the improver:\n\n```sql\nexecute script TEST.JAVA_UDF_STARTUP_TIME_IMPROVER(\n    '\u003cschema of the script to optimize\u003e', \n    '\u003cname of the script to optimize\u003e',  \n    '\u003cname of the connection we just created\u003e', \n    \u003cbucketfs-port\u003e, \n    '\u003cname of the BucketFS service where the improver stores the class-dump\u003e', \n    '\u003cname of the Bucket where the improver stores the class-dump\u003e', \n    '\u003cpath for the class dump file in the bucket\u003e')\n```\n\nFor example, if you want to optimize the udf `TEST.MY_UDF` you can use parameters like:\n\n```sql\nexecute script TEST.JAVA_UDF_STARTUP_TIME_IMPROVER(\n    'TEST', \n    'MY_UDF', \n    'BFS_CONNECTION', \n    2580, \n    'bfsdefault', \n    'default', \n    'my-dump.jsa')\n```\n\nWhen you execute the script, the improver creates the class-dump, uploads it to BucketFS and updates your script definition.\n\n## Additional Information\n\n* [Changelog](doc/changes/changelog.md)\n* [Dependencies](dependencies.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexasol%2Fjava-udf-startup-time-improver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexasol%2Fjava-udf-startup-time-improver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexasol%2Fjava-udf-startup-time-improver/lists"}