This document provides an introduction to Project Panama and the Foreign Function and Memory API (FFMA) from a newcomer's perspective. It discusses:
- What Project Panama aims to accomplish in replacing the Java Native Interface (JNI) with a safer and easier to use pure Java API.
- An overview of the FFMA and how it allows calling foreign functions and accessing foreign memory in a safer way than JNI.
- Recommendations for how newcomers can get started with Project Panama, including setting environment variables and using jextract to generate Java wrappers for C headers.
A workshop on Java's Project Panama for Newbies to learn about native access to C libraries. Labs are located: https://github.com/carldea/java-panama-workshop
carrow - Go bindings to Apache Arrow via C++-APIYoni Davidson
Apache Arrow is a cross-language development platform for in-memory data that specifies a standardized columnar memory format. It provides libraries and messaging for moving data between languages and services without serialization. The presenter discusses their motivation for creating Go bindings for Apache Arrow via C++ to share data between Go and Python programs using the same memory format. They explain several challenges of this approach, such as different memory managers in Go and C++, and solutions like generating wrapper code and handling memory with finalizers.
Presentation used for tutorial session on Python for finalists of CSEA Code Maestros on Feb 11, 2012. More resources at http://athena.nitc.ac.in/~k4rtik/python/
Querying 1.8 billion reddit comments with pythonDaniel Rodriguez
The document is about querying over 1.6 billion Reddit comments using Python. It discusses:
1) Moving the Reddit comment data from S3 to HDFS and converting it to the Parquet format for efficiency.
2) Using the Blaze and Ibis Python libraries to query the data through Impala, allowing SQL-like queries with a Pandas-like API.
3) Examples of queries, like counting total comments or comments in specific subreddits, and plotting the daily frequency of comments in the /r/IAmA subreddit.
This document contains slides from a lecture on Java basics. It begins with a brief history of Java, noting it was developed at Sun Microsystems in the early 1990s and was designed to be platform independent. It then discusses how Java code is compiled to bytecode and run on a Java Virtual Machine. The remainder of the document covers basic Java concepts like data types, classes and objects, methods, and control structures like conditionals and loops. It provides examples to demonstrate Java syntax and how the language works.
This document contains slides from a lecture on Java basics. It introduces Java by discussing its history and how Java code is compiled. It then covers Java data types, variables, objects, classes, methods, and control structures like conditionals. The slides provide examples and explanations of core Java concepts to teach students the fundamentals of the language.
This document contains slides from a lecture on Java basics. It discusses the history of Java and how it achieved platform independence through the Java Virtual Machine. It also covers Java syntax, including the structure of Java programs using classes and objects. The slides demonstrate a simple "Hello World" program and define key Java concepts like data types, identifiers, and the import statement. They provide examples of using built-in classes like String and Math as well as how to create and use custom class objects.
Presentation of Python, Django, DockerStackDavid Sanchez
Python is a widely used high-level, general-purpose, interpreted programming language. It provides constructs intended to enable clear programs on both small and large scale. Python features a dynamic type system and automatic memory management and supports multiple programming paradigms, including object-oriented, imperative, functional and procedural styles. It has a large and comprehensive standard library.
A workshop on Java's Project Panama for Newbies to learn about native access to C libraries. Labs are located: https://github.com/carldea/java-panama-workshop
carrow - Go bindings to Apache Arrow via C++-APIYoni Davidson
Apache Arrow is a cross-language development platform for in-memory data that specifies a standardized columnar memory format. It provides libraries and messaging for moving data between languages and services without serialization. The presenter discusses their motivation for creating Go bindings for Apache Arrow via C++ to share data between Go and Python programs using the same memory format. They explain several challenges of this approach, such as different memory managers in Go and C++, and solutions like generating wrapper code and handling memory with finalizers.
Presentation used for tutorial session on Python for finalists of CSEA Code Maestros on Feb 11, 2012. More resources at http://athena.nitc.ac.in/~k4rtik/python/
Querying 1.8 billion reddit comments with pythonDaniel Rodriguez
The document is about querying over 1.6 billion Reddit comments using Python. It discusses:
1) Moving the Reddit comment data from S3 to HDFS and converting it to the Parquet format for efficiency.
2) Using the Blaze and Ibis Python libraries to query the data through Impala, allowing SQL-like queries with a Pandas-like API.
3) Examples of queries, like counting total comments or comments in specific subreddits, and plotting the daily frequency of comments in the /r/IAmA subreddit.
This document contains slides from a lecture on Java basics. It begins with a brief history of Java, noting it was developed at Sun Microsystems in the early 1990s and was designed to be platform independent. It then discusses how Java code is compiled to bytecode and run on a Java Virtual Machine. The remainder of the document covers basic Java concepts like data types, classes and objects, methods, and control structures like conditionals and loops. It provides examples to demonstrate Java syntax and how the language works.
This document contains slides from a lecture on Java basics. It introduces Java by discussing its history and how Java code is compiled. It then covers Java data types, variables, objects, classes, methods, and control structures like conditionals. The slides provide examples and explanations of core Java concepts to teach students the fundamentals of the language.
This document contains slides from a lecture on Java basics. It discusses the history of Java and how it achieved platform independence through the Java Virtual Machine. It also covers Java syntax, including the structure of Java programs using classes and objects. The slides demonstrate a simple "Hello World" program and define key Java concepts like data types, identifiers, and the import statement. They provide examples of using built-in classes like String and Math as well as how to create and use custom class objects.
Presentation of Python, Django, DockerStackDavid Sanchez
Python is a widely used high-level, general-purpose, interpreted programming language. It provides constructs intended to enable clear programs on both small and large scale. Python features a dynamic type system and automatic memory management and supports multiple programming paradigms, including object-oriented, imperative, functional and procedural styles. It has a large and comprehensive standard library.
BioMake is a language for specifying build networks of interdependent computational tasks. It allows defining targets with logical patterns that represent tasks. Targets have dependencies on other targets and are built by running actions. This allows automating sequencing analysis pipelines by specifying the execution of tasks like formatting databases and running BLAST alignments in a declarative way.
PyCon 2013 : Scripting to PyPi to GitHub and MoreMatt Harrison
This document discusses various aspects of developing and distributing Python projects, including versioning, configuration, logging, file input, shell invocation, environment layout, project layout, documentation, automation with Makefiles, packaging, testing, GitHub, Travis CI, and PyPI. It recommends using semantic versioning, the logging module, parsing files with the file object interface, invoking shell commands with subprocess, using virtualenv for sandboxed environments, Sphinx for documentation, Makefiles to automate tasks, setuptools for packaging, and GitHub, Travis CI and PyPI for distribution.
Eric Lafortune - Fighting application size with ProGuard and beyondGuardSquare
The document discusses various techniques for reducing Android application size, including compressing resources and assets, trimming unused resources and assets, splitting APK files, shrinking libraries, shrinking the application bytecode, and splitting dex files. It provides examples of using tools like ProGuard, DexGuard, and the Android Gradle plugin to apply these techniques at build time in order to reduce the overall size of the packaged Android application.
Eric Lafortune - Fighting application size with ProGuard and beyondGuardSquare
The document discusses various techniques for reducing Android application size, including compressing resources and assets, trimming unused resources and assets, splitting APK files, shrinking libraries, shrinking the application bytecode, and splitting dex files. It provides examples of using tools like ProGuard, DexGuard, and the Android Gradle plugin to apply these techniques at build time in order to reduce the overall size of the packaged Android application.
This document contains slides from a lecture on Java basics. It covers:
- A brief history of Java and how it works by using bytecode and a Java Virtual Machine for platform independence.
- Java's data types including primitives and classes/objects.
- How to write a simple Java program, compile and run it, and basic program structure.
- Other basics like variables, methods, control structures, and exceptions.
The slides provide examples and explanations of core Java concepts to teach students the fundamentals of the language.
Pharo is a modern and powerful Smalltalk environment that is open source, supports many platforms, and actively adds new features. Version 5.0 includes performance improvements from the new Spur VM, as well as new debugging tools and a unified FFI. An example web application built with Teapot and PunQLite demonstrates how easily full-stack web applications can now be developed in Pharo.
This document provides an overview of key concepts in C and C++ including:
1. The structure of a C/C++ program including main functions, declarations, statements, and preprocessor directives.
2. Basic data types like integers, floats, characters, and aggregates like arrays and structures.
3. Common programming constructs like selection, loops, functions and input/output.
4. Additional C++ topics like classes, inheritance and input/output streams.
5. Pointers and how they store the address of a variable in memory rather than the variable's value.
Core Java Programming Language (JSE) : Chapter XI - Console I/O and File I/OWebStackAcademy
This document discusses console and file input/output in Java. It describes how to read from standard input using System.in, write to standard output using System.out, and read/write files using File and FileReader/FileWriter classes. Methods for formatted output/input are also covered. The document provides examples for reading keyboard input, writing to console, and reading/writing files line-by-line.
This document provides an overview of the Android embedded operating system, including its hardware, software ecosystem, and key characteristics and components. It discusses the Android Open Source Project, the layered architecture including the kernel, HAL, system services, and apps. It also covers the build system, filesystem structure, debugging and development tools like ADB and logcat.
This document provides guidance on sharing reproducible R code projects using version control with Git and GitHub. It discusses configuring Git and RStudio to work together, organizing R projects, publishing projects on GitHub, and tips for making code more shareable. Version control with Git allows tracking changes, collaboration, and recovering from issues like computer crashes. Following standards for coding style, documentation, and packaging environments helps ensure projects are reproducible.
The document contains details of 10 practical assignments for a programming language course. It includes examples of code snippets to demonstrate inheritance, polymorphism, delegates, constructors, exception handling, file I/O, adding a flash item to a website, and explanations of XML and DTDs. The assignments cover core concepts of .NET framework and C# programming language.
This document contains lecture notes on Java programming divided into 6 units. Unit 1 provides an introduction to Java including an overview of data types, variables, arrays, operators, control statements, classes and objects, and input/output. It also covers inheritance, abstract classes, and the object class. Subsequent units cover topics like string handling, packages, interfaces, exception handling, multithreading, applets, event handling, AWT, Swings, and JDBC. Examples of Java programs and potential errors are also provided.
This document contains lecture notes on Java programming divided into 6 units. Unit 1 provides an overview of Java and covers data types, variables, arrays, operators, control statements and classes. It also discusses I/O operations like reading console input/output and files. Unit 2 covers string handling and the StringBuffer class. Unit 3 discusses packages, interfaces and exception handling. Unit 4 focuses on multithreading concepts. Unit 5 covers applets, event handling and the Abstract Window Toolkit. Unit 6 introduces Swing and JDBC. The document also includes examples of Java programs and lists lab experiments and reference books.
Docker is an open-source project to easily create lightweight, portable, self-sufficient containers from any application. The same container that a developer builds and tests on a laptop can run at scale, in production, on VMs, bare metal, OpenStack clusters, public clouds and more.
This document provides an overview of a Java programming fundamentals course. It discusses the history and development of Java, how Java works, and some of its core features. Some key points:
- Java was created in the early 1990s by James Gosling at Sun Microsystems to be platform independent through the use of bytecode and the Java Virtual Machine.
- A Java program consists of classes that contain methods and can create objects. Everything must be contained within a class.
- The document reviews Java's basic data types including primitives like int and double, as well as classes. It also covers expressions, control structures like if/else statements and loops, and built-in classes like String and Math.
A web browser takes you anywhere on the internet, letting you see text, images and video from anywhere in the world. ... The web is a vast and powerful tool. Over .
Camisole is a secure online sandbox for grading student code submissions. It uses Linux namespaces and cgroups to isolate untrusted code and enforce resource limits like memory and time. Camisole has a simple HTTP API and supports many programming languages through a modular language definition system. It aims to securely evaluate code submissions for online courses and programming contests in a lightweight and language-agnostic way.
Cmake is a cross-platform build system generator that allows users to specify platform-independent build processes. It generates native makefiles and workspaces that can be used in the compiler IDE of choice. Cmake supports interactive and non-interactive modes to configure projects. It provides options to control code generation, set variables, and obtain help documentation for commands, modules, and other aspects of Cmake.
Try to imagine the amount of time and effort it would take you to write a bug-free script or application that will accept a URL, port scan it, and for each HTTP service that it finds, it will create a new thread and perform a black box penetration testing while impersonating a Blackberry 9900 smartphone. While you’re thinking, Here’s how you would have done it in Hackersh:
“http://localhost” \
-> url \
-> nmap \
-> browse(ua=”Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+”) \
-> w3af
Meet Hackersh (“Hacker Shell”) – A new, free and open source cross-platform shell (command interpreter) with built-in security commands and Pythonect-like syntax.
Aside from being interactive, Hackersh is also scriptable with Pythonect. Pythonect is a new, free, and open source general-purpose dataflow programming language based on Python, written in Python. Hackersh is inspired by Unix pipeline, but takes it a step forward by including built-in features like remote invocation and threads. This 120 minute lab session will introduce Hackersh, the automation gap it fills, and its features. Lots of demonstrations and scripts are included to showcase concepts and ideas.
Flutter is a popular open source, cross-platform framework developed by Google. In this webinar we'll explore Flutter and its architecture, delve into the Flutter Embedder and Flutter’s Dart language, discover how to leverage Flutter for embedded device development, learn about Automotive Grade Linux (AGL) and its consortium and understand the rationale behind AGL's choice of Flutter for next-gen IVI systems. Don’t miss this opportunity to discover whether Flutter is right for your project.
BioMake is a language for specifying build networks of interdependent computational tasks. It allows defining targets with logical patterns that represent tasks. Targets have dependencies on other targets and are built by running actions. This allows automating sequencing analysis pipelines by specifying the execution of tasks like formatting databases and running BLAST alignments in a declarative way.
PyCon 2013 : Scripting to PyPi to GitHub and MoreMatt Harrison
This document discusses various aspects of developing and distributing Python projects, including versioning, configuration, logging, file input, shell invocation, environment layout, project layout, documentation, automation with Makefiles, packaging, testing, GitHub, Travis CI, and PyPI. It recommends using semantic versioning, the logging module, parsing files with the file object interface, invoking shell commands with subprocess, using virtualenv for sandboxed environments, Sphinx for documentation, Makefiles to automate tasks, setuptools for packaging, and GitHub, Travis CI and PyPI for distribution.
Eric Lafortune - Fighting application size with ProGuard and beyondGuardSquare
The document discusses various techniques for reducing Android application size, including compressing resources and assets, trimming unused resources and assets, splitting APK files, shrinking libraries, shrinking the application bytecode, and splitting dex files. It provides examples of using tools like ProGuard, DexGuard, and the Android Gradle plugin to apply these techniques at build time in order to reduce the overall size of the packaged Android application.
Eric Lafortune - Fighting application size with ProGuard and beyondGuardSquare
The document discusses various techniques for reducing Android application size, including compressing resources and assets, trimming unused resources and assets, splitting APK files, shrinking libraries, shrinking the application bytecode, and splitting dex files. It provides examples of using tools like ProGuard, DexGuard, and the Android Gradle plugin to apply these techniques at build time in order to reduce the overall size of the packaged Android application.
This document contains slides from a lecture on Java basics. It covers:
- A brief history of Java and how it works by using bytecode and a Java Virtual Machine for platform independence.
- Java's data types including primitives and classes/objects.
- How to write a simple Java program, compile and run it, and basic program structure.
- Other basics like variables, methods, control structures, and exceptions.
The slides provide examples and explanations of core Java concepts to teach students the fundamentals of the language.
Pharo is a modern and powerful Smalltalk environment that is open source, supports many platforms, and actively adds new features. Version 5.0 includes performance improvements from the new Spur VM, as well as new debugging tools and a unified FFI. An example web application built with Teapot and PunQLite demonstrates how easily full-stack web applications can now be developed in Pharo.
This document provides an overview of key concepts in C and C++ including:
1. The structure of a C/C++ program including main functions, declarations, statements, and preprocessor directives.
2. Basic data types like integers, floats, characters, and aggregates like arrays and structures.
3. Common programming constructs like selection, loops, functions and input/output.
4. Additional C++ topics like classes, inheritance and input/output streams.
5. Pointers and how they store the address of a variable in memory rather than the variable's value.
Core Java Programming Language (JSE) : Chapter XI - Console I/O and File I/OWebStackAcademy
This document discusses console and file input/output in Java. It describes how to read from standard input using System.in, write to standard output using System.out, and read/write files using File and FileReader/FileWriter classes. Methods for formatted output/input are also covered. The document provides examples for reading keyboard input, writing to console, and reading/writing files line-by-line.
This document provides an overview of the Android embedded operating system, including its hardware, software ecosystem, and key characteristics and components. It discusses the Android Open Source Project, the layered architecture including the kernel, HAL, system services, and apps. It also covers the build system, filesystem structure, debugging and development tools like ADB and logcat.
This document provides guidance on sharing reproducible R code projects using version control with Git and GitHub. It discusses configuring Git and RStudio to work together, organizing R projects, publishing projects on GitHub, and tips for making code more shareable. Version control with Git allows tracking changes, collaboration, and recovering from issues like computer crashes. Following standards for coding style, documentation, and packaging environments helps ensure projects are reproducible.
The document contains details of 10 practical assignments for a programming language course. It includes examples of code snippets to demonstrate inheritance, polymorphism, delegates, constructors, exception handling, file I/O, adding a flash item to a website, and explanations of XML and DTDs. The assignments cover core concepts of .NET framework and C# programming language.
This document contains lecture notes on Java programming divided into 6 units. Unit 1 provides an introduction to Java including an overview of data types, variables, arrays, operators, control statements, classes and objects, and input/output. It also covers inheritance, abstract classes, and the object class. Subsequent units cover topics like string handling, packages, interfaces, exception handling, multithreading, applets, event handling, AWT, Swings, and JDBC. Examples of Java programs and potential errors are also provided.
This document contains lecture notes on Java programming divided into 6 units. Unit 1 provides an overview of Java and covers data types, variables, arrays, operators, control statements and classes. It also discusses I/O operations like reading console input/output and files. Unit 2 covers string handling and the StringBuffer class. Unit 3 discusses packages, interfaces and exception handling. Unit 4 focuses on multithreading concepts. Unit 5 covers applets, event handling and the Abstract Window Toolkit. Unit 6 introduces Swing and JDBC. The document also includes examples of Java programs and lists lab experiments and reference books.
Docker is an open-source project to easily create lightweight, portable, self-sufficient containers from any application. The same container that a developer builds and tests on a laptop can run at scale, in production, on VMs, bare metal, OpenStack clusters, public clouds and more.
This document provides an overview of a Java programming fundamentals course. It discusses the history and development of Java, how Java works, and some of its core features. Some key points:
- Java was created in the early 1990s by James Gosling at Sun Microsystems to be platform independent through the use of bytecode and the Java Virtual Machine.
- A Java program consists of classes that contain methods and can create objects. Everything must be contained within a class.
- The document reviews Java's basic data types including primitives like int and double, as well as classes. It also covers expressions, control structures like if/else statements and loops, and built-in classes like String and Math.
A web browser takes you anywhere on the internet, letting you see text, images and video from anywhere in the world. ... The web is a vast and powerful tool. Over .
Camisole is a secure online sandbox for grading student code submissions. It uses Linux namespaces and cgroups to isolate untrusted code and enforce resource limits like memory and time. Camisole has a simple HTTP API and supports many programming languages through a modular language definition system. It aims to securely evaluate code submissions for online courses and programming contests in a lightweight and language-agnostic way.
Cmake is a cross-platform build system generator that allows users to specify platform-independent build processes. It generates native makefiles and workspaces that can be used in the compiler IDE of choice. Cmake supports interactive and non-interactive modes to configure projects. It provides options to control code generation, set variables, and obtain help documentation for commands, modules, and other aspects of Cmake.
Try to imagine the amount of time and effort it would take you to write a bug-free script or application that will accept a URL, port scan it, and for each HTTP service that it finds, it will create a new thread and perform a black box penetration testing while impersonating a Blackberry 9900 smartphone. While you’re thinking, Here’s how you would have done it in Hackersh:
“http://localhost” \
-> url \
-> nmap \
-> browse(ua=”Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+”) \
-> w3af
Meet Hackersh (“Hacker Shell”) – A new, free and open source cross-platform shell (command interpreter) with built-in security commands and Pythonect-like syntax.
Aside from being interactive, Hackersh is also scriptable with Pythonect. Pythonect is a new, free, and open source general-purpose dataflow programming language based on Python, written in Python. Hackersh is inspired by Unix pipeline, but takes it a step forward by including built-in features like remote invocation and threads. This 120 minute lab session will introduce Hackersh, the automation gap it fills, and its features. Lots of demonstrations and scripts are included to showcase concepts and ideas.
Flutter is a popular open source, cross-platform framework developed by Google. In this webinar we'll explore Flutter and its architecture, delve into the Flutter Embedder and Flutter’s Dart language, discover how to leverage Flutter for embedded device development, learn about Automotive Grade Linux (AGL) and its consortium and understand the rationale behind AGL's choice of Flutter for next-gen IVI systems. Don’t miss this opportunity to discover whether Flutter is right for your project.
SMS API Integration in Saudi Arabia| Best SMS API ServiceYara Milbes
Discover the benefits and implementation of SMS API integration in the UAE and Middle East. This comprehensive guide covers the importance of SMS messaging APIs, the advantages of bulk SMS APIs, and real-world case studies. Learn how CEQUENS, a leader in communication solutions, can help your business enhance customer engagement and streamline operations with innovative CPaaS, reliable SMS APIs, and omnichannel solutions, including WhatsApp Business. Perfect for businesses seeking to optimize their communication strategies in the digital age.
How Can Hiring A Mobile App Development Company Help Your Business Grow?ToXSL Technologies
ToXSL Technologies is an award-winning Mobile App Development Company in Dubai that helps businesses reshape their digital possibilities with custom app services. As a top app development company in Dubai, we offer highly engaging iOS & Android app solutions. https://rb.gy/necdnt
E-commerce Development Services- Hornet DynamicsHornet Dynamics
For any business hoping to succeed in the digital age, having a strong online presence is crucial. We offer Ecommerce Development Services that are customized according to your business requirements and client preferences, enabling you to create a dynamic, safe, and user-friendly online store.
8 Best Automated Android App Testing Tool and Framework in 2024.pdfkalichargn70th171
Regarding mobile operating systems, two major players dominate our thoughts: Android and iPhone. With Android leading the market, software development companies are focused on delivering apps compatible with this OS. Ensuring an app's functionality across various Android devices, OS versions, and hardware specifications is critical, making Android app testing essential.
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Drona Infotech is a premier mobile app development company in Noida, providing cutting-edge solutions for businesses.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
Most important New features of Oracle 23c for DBAs and Developers. You can get more idea from my youtube channel video from https://youtu.be/XvL5WtaC20A
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsPeter Muessig
The UI5 tooling is the development and build tooling of UI5. It is built in a modular and extensible way so that it can be easily extended by your needs. This session will showcase various tooling extensions which can boost your development experience by far so that you can really work offline, transpile your code in your project to use even newer versions of EcmaScript (than 2022 which is supported right now by the UI5 tooling), consume any npm package of your choice in your project, using different kind of proxies, and even stitching UI5 projects during development together to mimic your target environment.
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
Using Query Store in Azure PostgreSQL to Understand Query PerformanceGrant Fritchey
Microsoft has added an excellent new extension in PostgreSQL on their Azure Platform. This session, presented at Posette 2024, covers what Query Store is and the types of information you can get out of it.
Unveiling the Advantages of Agile Software Development.pdfbrainerhub1
Learn about Agile Software Development's advantages. Simplify your workflow to spur quicker innovation. Jump right in! We have also discussed the advantages.
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemPeter Muessig
Learn about the latest innovations in and around OpenUI5/SAPUI5: UI5 Tooling, UI5 linter, UI5 Web Components, Web Components Integration, UI5 2.x, UI5 GenAI.
Recording:
https://www.youtube.com/live/MSdGLG2zLy8?si=INxBHTqkwHhxV5Ta&t=0
2. About Me
• A Sr. Developer Advocate at Azul Systems
• Developing software for 20+ years
• Authored & Tech Reviewed Java books
• A JavaFX (fanboy) enthusiast
• Loves sharing and advocating Java based technologies
Other interests:
Graphics, UI, Game programming, GEO spatial data & map
visualizations, Custom UI controls, IoT, Smart phones, AI, and
Robotics and Boating.
Twitter: @carldea
LinkedIn: https://github.com/carldea
Email: cdea@azul.com
Carl Dea
8. The JACOB Project: A JAva-COM Bridge
Now you can call COM Automation from any Win32 Java VM using JNI
Copyright 1999-2004 Dan Adler
Latest Version: October 17, 2004 (V1.8)
https://danadler.com/tech-articles/jacob-2/
17. JEP 389: 1st Incubator
JEP 370: 1st Incubator
Foreign-Memory Access API
Vector API
JEP 338: 1st Incubator JEP 383: 2nd Incubator
JEP 393: 3rd Incubator
Foreign Linker API
Foreign Function
&
Memory Access API
JEP 412: 1st Incubator
Project Panama
JEP 419: 2nd Incubator
JEP 424: Preview
JEP 414: 2nd Incubator
18.
19. JEP 419: 2nd Incubator
jdk.incubator.foreign
JEP 424 Preview
java.lang.foreign
+
Bug-fixes
22. Bene
fi
ts
Ease of use — Replace the Java Native Interface (JNI) with a superior, pure-Java
development model.
Performance — Provide performance that is comparable to, if not better than,
existing APIs such as JNI and sun.misc.Unsafe.
General Purpose — Provide ways to operate on different kinds of foreign memory
(e.g., native memory, persistent memory, and managed heap memory) and, over time, to
accommodate other platforms (e.g., 32-bit x86) and foreign functions written in languages
other than C (e.g., C++, Fortran).
Safety — Disable unsafe operations by default, allowing them only after
explicit opt-in from application developers or end users.
23. Ease of use — Replace the Java Native Interface (JNI) with a superior, pure-Java
development model.
Performance — Provide performance that is comparable to, if not better than,
existing APIs such as JNI and sun.misc.Unsafe.
General Purpose — Provide ways to operate on different kinds of foreign memory
(e.g., native memory, persistent memory, and managed heap memory) and, over time, to
accommodate other platforms (e.g., 32-bit x86) and foreign functions written in languages
other than C (e.g., C++, Fortran).
Safety — Disable unsafe operations by default, allowing them only after
explicit opt-in from application developers or end users.
Bene
fi
ts
24. Ease of use — Replace the Java Native Interface (JNI) with a superior, pure-Java
development model.
Performance — Provide performance that is comparable to, if not better than,
existing APIs such as JNI and sun.misc.Unsafe.
General Purpose — Provide ways to operate on different kinds of foreign memory
(e.g., native memory, persistent memory, and managed heap memory) and, over time, to
accommodate other platforms (e.g., 32-bit x86) and foreign functions written in languages
other than C (e.g., C++, Fortran).
Safety — Disable unsafe operations by default, allowing them only after
explicit opt-in from application developers or end users.
Bene
fi
ts
25. Ease of use — Replace the Java Native Interface (JNI) with a superior, pure-Java
development model.
Performance — Provide performance that is comparable to, if not better than,
existing APIs such as JNI and sun.misc.Unsafe.
General Purpose — Provide ways to operate on different kinds of foreign memory
(e.g., native memory, persistent memory, and managed heap memory) and, over time, to
accommodate other platforms (e.g., 32-bit x86) and foreign functions written in languages
other than C (e.g., C++, Fortran).
Safety — Disable unsafe operations by default, allowing them only after
explicit opt-in from application developers or end users.
Bene
fi
ts
38. What’s a MethodHandle?
A method handle is a Java object that references a
native C function or C variable in memory and
the ability to accessed or invoked from Java code.
In the C/C++ world symbols are a unique lookup of C
functions and variables from the C linker
(java.library.path).
In layman’s (newbie) terms:
39. What’s a MethodHandle?
A method handle is a typed, directly executable
reference to an underlying method, constructor,
fi
eld, or
similar low-level operation, with optional
transformations of arguments or return values.These
transformations are quite general, and include such
patterns as conversion, insertion, deletion, and
substitution.
According to the Javadoc Documentation since JDK 7
41. Creating a MethodHandle - JDK 18+
MethodHandle class
FunctionDescriptor
describes return type from C
NativeSymbol
C symbols from library path
Note: For better performance make method handles
fi
nal static
42. Is there a better way?
FILE *freopen(const char *filename, const char *mode, FILE *stream)
49. jextract -h
Quick Check
Option Description
------ -----------
-?, -h, --help print help
-C <String> pass through argument for clang
-I <String> specify include files path
-d <String> specify where to place generated files
--dump-includes <String> dump included symbols into specified file
--header-class-name <String> name of the header class
--include-function <String> name of function to include
--include-macro <String> name of constant macro to include
--include-struct <String> name of struct definition to include
--include-typedef <String> name of type definition to include
--include-union <String> name of union definition to include
--include-var <String> name of global variable to include
-l <String> specify a library
--source generate java sources
-t, --target-package <String> target package for specified header files
Panama’s JExtract
50. jextract -h
Quick Check
Option Description
------ -----------
-?, -h, --help print help
-C <String> pass through argument for clang
-I <String> specify include files path
-d <String> specify where to place generated files
--dump-includes <String> dump included symbols into specified file
--header-class-name <String> name of the header class
--include-function <String> name of function to include
--include-macro <String> name of constant macro to include
--include-struct <String> name of struct definition to include
--include-typedef <String> name of type definition to include
--include-union <String> name of union definition to include
--include-var <String> name of global variable to include
-l <String> specify a library
--source generate java sources
-t, --target-package <String> target package for specified header files
Panama’s JExtract
C headers path
ie: /usr/local/include
51. jextract -h
Quick Check
Option Description
------ -----------
-?, -h, --help print help
-C <String> pass through argument for clang
-I <String> specify include files path
-d <String> specify where to place generated files
--dump-includes <String> dump included symbols into specified file
--header-class-name <String> name of the header class
--include-function <String> name of function to include
--include-macro <String> name of constant macro to include
--include-struct <String> name of struct definition to include
--include-typedef <String> name of type definition to include
--include-union <String> name of union definition to include
--include-var <String> name of global variable to include
-l <String> specify a library
--source generate java sources
-t, --target-package <String> target package for specified header files
Panama’s JExtract
Generated Code
ie: ./classes
./generated/src
52. jextract -h
Quick Check
Option Description
------ -----------
-?, -h, --help print help
-C <String> pass through argument for clang
-I <String> specify include files path
-d <String> specify where to place generated files
--dump-includes <String> dump included symbols into specified file
--header-class-name <String> name of the header class
--include-function <String> name of function to include
--include-macro <String> name of constant macro to include
--include-struct <String> name of struct definition to include
--include-typedef <String> name of type definition to include
--include-union <String> name of union definition to include
--include-var <String> name of global variable to include
-l <String> specify a library
--source generate java sources
-t, --target-package <String> target package for specified header files
Panama’s JExtract
Library
ie: tensorflow
53. jextract -h
Quick Check
Option Description
------ -----------
-?, -h, --help print help
-C <String> pass through argument for clang
-I <String> specify include files path
-d <String> specify where to place generated files
--dump-includes <String> dump included symbols into specified file
--header-class-name <String> name of the header class
--include-function <String> name of function to include
--include-macro <String> name of constant macro to include
--include-struct <String> name of struct definition to include
--include-typedef <String> name of type definition to include
--include-union <String> name of union definition to include
--include-var <String> name of global variable to include
-l <String> specify a library
--source generate java sources
-t, --target-package <String> target package for specified header files
Panama’s JExtract
Generated Java Source
ie: org/unix/foo_h.java
54. jextract -h
Quick Check
Option Description
------ -----------
-?, -h, --help print help
-C <String> pass through argument for clang
-I <String> specify include files path
-d <String> specify where to place generated files
--dump-includes <String> dump included symbols into specified file
--header-class-name <String> name of the header class
--include-function <String> name of function to include
--include-macro <String> name of constant macro to include
--include-struct <String> name of struct definition to include
--include-typedef <String> name of type definition to include
--include-union <String> name of union definition to include
--include-var <String> name of global variable to include
-l <String> specify a library
--source generate java sources
-t, --target-package <String> target package for specified header files
Panama’s JExtract
Package namespace prefix
ie: org.unix
55. $ export C_INCLUDE=/usr/local/include
# or depending where the defaults are installed
$ export C_INCLUDE=/usr/include
MacOS
$ export C_INCLUDE=Applications/Xcode.app/Contents/
Developer/Platforms/MacOSX.platform/Developer/SDKs/
MacOSX.sdk/usr/include
Let’s jextract stdio.h
Windows
Tech Note: UsingVSCode 2022 - https://docs.microsoft.com/en-us/cpp/build/
walkthrough-compile-a-c-program-on-the-command-line?
view=msvc-170#open-a-developer-command-prompt-in-visual-studio-2022
Linux
Create a convenient
environment variable
C_INCLUDE
75. ValueLayout
To create a C primitive use CLinker’s C ValueLayouts such as
C_INT
C_DOUBLE
C_POINTER, etc.
MemorySegment
76. ValueLayout
To create a C primitive use CLinker’s C ValueLayouts such as
C_INT
C_DOUBLE
C_POINTER, etc. Native Allocator
77. ValueLayout
To create a C primitive use CLinker’s C ValueLayouts such as
C_INT
C_DOUBLE
C_POINTER, etc.
78. ValueLayout
To create a C primitive use CLinker’s C ValueLayouts such as
C_INT
C_DOUBLE
C_POINTER, etc.
JDK 18+ uses the
MemorySegment class’
get()/set() methods
89. What’s a C Pointer?
C supports the use of pointers, a type of reference that records the
address or location of an object or function in memory. Pointers can
be dereferenced to access data stored at the address pointed to, or
to invoke a pointed-to function. Pointers can be manipulated using
assignment or pointer arithmetic.
The C Programming Language book
by
Brian W. Kernighan & Dennis M. Ritchie
90. What’s a C Pointer?
ptr = &x x = 5
0x0DDBA11 0xCAFEBABE 0xCAFEBABE 5
Address or Location
91. What’s a C Pointer?
ptr = &x x = 5
0x0DDBA11 0xCAFEBABE 0xCAFEBABE 5
Storage
92. Obtaining a C Pointer in Panama
The reference or address of a C int variable:
93. How to Dereference A Pointer?
Obtain value at the address referenced by the pointer.