{"id":15069490,"url":"https://github.com/carldea/panama4newbies","last_synced_at":"2025-04-10T17:41:26.798Z","repository":{"id":47315221,"uuid":"391440581","full_name":"carldea/panama4newbies","owner":"carldea","description":"This is a blog series to explore OpenJDK's Project Panama.","archived":false,"fork":false,"pushed_at":"2022-06-27T15:12:05.000Z","size":1786,"stargazers_count":86,"open_issues_count":1,"forks_count":13,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-24T15:21:42.868Z","etag":null,"topics":["java","openjdk","panama"],"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/carldea.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}},"created_at":"2021-07-31T18:56:51.000Z","updated_at":"2025-03-08T04:24:36.000Z","dependencies_parsed_at":"2022-09-16T12:40:17.774Z","dependency_job_id":null,"html_url":"https://github.com/carldea/panama4newbies","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carldea%2Fpanama4newbies","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carldea%2Fpanama4newbies/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carldea%2Fpanama4newbies/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carldea%2Fpanama4newbies/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/carldea","download_url":"https://codeload.github.com/carldea/panama4newbies/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248262185,"owners_count":21074258,"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":["java","openjdk","panama"],"created_at":"2024-09-25T01:42:50.475Z","updated_at":"2025-04-10T17:41:26.779Z","avatar_url":"https://github.com/carldea.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Panama 4 Newbies \n\nThis is a quick intro to OpenJDK's Project Panama.\n\n- Part 1  https://foojay.io/today/project-panama-for-newbies-part-1\n- Part 2  https://foojay.io/today/project-panama-for-newbies-part-2\n- Part 3  https://foojay.io/today/project-panama-for-newbies-part-3\n- Part 4  https://foojay.io/today/project-panama-for-newbies-part-4\n\n## Part 1 - Learning Java Panama and C primitive types\nPart 1 is where you'll learn about jextract and Panama APIs to create C primitive type data and use the printf() function from stdio.h.\nhttps://github.com/carldea/panama4newbies/tree/main/part01\n\n## Part 2 - Learning Java Panama and C Pointers and Structs\nPart 2 you'll increase your knowledge on using Panama APIs to mimic C Pointers and create structs to hold complex data.\nhttps://github.com/carldea/panama4newbies/tree/main/part02\n\n## Part 3 - Learning Java Panama and C based Third Party Libraries\nPart 3 is a chance to use Panama APIs to access third party libraries.\nhttps://github.com/carldea/panama4newbies/tree/main/part03\n\n## Part 4 - Learning Java Panama and C based Callbacks (Function Pointers)\nPart 4 is a chance to use Panama APIs to allow C code to talk to Java code.\nhttps://github.com/carldea/panama4newbies/tree/main/part04\n\n\n\n## Setting up your IDE \n1. Make sure you know where you've downloaded the Panama Early Access Build and directory.\n2. Setup environment variables and run the following:\n```shell\n$ java -version\n$ jextract -h \n```\n3. Change directories to Part01 as a project you'll want to setup as the working directory.\n4. Run script to jextract for part 1\n```shell\n$ ./jextract_HelloWorld.java.sh\n```\n5. Create/Open an IntelliJ project in that directory.\n6. Setup up JDK File -\u003e Project Structure -\u003e Project SDK\n   Select the downloaded the early access JDK from https://jdk.java.net/panama/\n   \n   ![Panama Builds](https://github.com/carldea/panama4newbies/raw/main/IntelliJ-PanamaJDK.png)\n\n7. In preferences you'll need to add  --add-modules jdk.incubator.foreign.\n\nIntelliJ you'll need to do the following:\n\n![Add modules](https://github.com/carldea/panama4newbies/raw/main/IntelliJ-Preferences.png)\n\n8. Ensure that directory `generated/src` is marked as generated sources root.\n9. Setup Run configurations and JVM options \n\n![Add JVM Options](https://github.com/carldea/panama4newbies/raw/main/IntelliJ-RunConfiguration.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarldea%2Fpanama4newbies","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarldea%2Fpanama4newbies","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarldea%2Fpanama4newbies/lists"}