JNA
planetiler
Our great sponsors
JNA | planetiler | |
---|---|---|
22 | 30 | |
8,259 | 1,149 | |
0.7% | 4.9% | |
7.7 | 9.3 | |
about 21 hours ago | 4 days ago | |
Java | Java | |
GNU General Public License v3.0 or later | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
JNA
-
FFM (Foreign Function and Memory API) Goes Final
As far as I understand it, with JNA, all calls into C code go through libffi: https://github.com/java-native-access/jna/blob/master/www/Fu...
This means that every call sets up some libffi data structures and libffi uses this information to perform the native call. Likewise in the other direction for return values. With JNI (and Panama), Hotspot can directly emit the argument/return code a the call, not too dissimilar from what a C or C++ compiler would do. There is still some overhead from maintaining JVM invariants. For example, I think a thread blocked in an FFI call can still participate in a safepoint. But that applies to JNI as well.
- Projetos em Java -- Por que você ou sua equipe escolheram a linguagem Java?
-
Are there any Non-Mobile Kotlin Native libraries wrapping C libraries like libhidapi/opengl?
If you were prepared to go to the JVM you might try JNA. https://github.com/java-native-access/jna
-
How to create fundamental libraries for my language?
Other good example, but for Java platform is JNA library. Do not mix it with Java's JNI, which is a bad example of how it could be done.
-
Rust vs Java for simple small GUI apps
In case you haven't used it (assuming that you already know about JNI, for comparison) - https://github.com/java-native-access/jna is about as easy as it gets for native interop. Also, as mentioned in another comment, with the Java FFM (Foreign Function and Memory) API already in preview mode, pretty soon, there will be no external dependencies at all, and Java should be able to interop with any language that can talk to C.
- Kotlin/Native
-
Does Java 18 finally have a better alternative to JNI?
The complexity of JNI has given rise to some community-driven libraries that make it simpler to do FFI in Java. Java Native Access (JNA) is one of them. It's built on top of JNI and at least makes FFI easier to use, especially as it removes the need to write any C binding code manually and reduces the chances of memory safety issues. Still, it has some of the disadvantages of being JNI-based and is slightly slower than JNI in many cases. However, JNA is widely used and battle-tested, so definitely a better option than using JNI directly.
-
JEP 419: Foreign Function and Memory API
This is about calling into any native operating system APIs, as long as they are callable via C or C++ (which these days means "all" operating system APIs).
JNI is somewhat harder to use, because you need custom glue on both sides of the border: Some custom classes in Java and some custom code on the C (and C++) side.
This proposal would remove the need for the glue on the C side and would allow a pure java solution.
Something like this has existed in third-party form for a while as JNA (https://github.com/java-native-access/jna), but now it's going to be built into the JRE itself (if the proposal passes through review)
- How run ToS on MacOSX as a java command?
-
Choosing Java as your language for a Machine Learning project
I use JNA https://github.com/java-native-access/jna , as you can write the entire interface in Java faster as well as easier without the need of messing with the complexities of JNI.
planetiler
-
Protomaps – A free and open source map of the world
Worth mentioning this project (https://github.com/onthegomap/planetiler) that lets you create osm mbtiles and pmtiles pretty easy!
-
Radar Maps: $0.50 per 1K map loads
For a self-hosted vector tile stack you can have a look into https://github.com/onthegomap/planetiler I found it very easy to get started and when you know the other stacks it is also very fast to create these vector tiles even for planet-scale.
(note, that I'm not affiliated with them, but they use some source code from us for the efficient import and also contributed to GraphHopper, but this did not influence my experience ;) )
> I wonder why so many seem to be moving away from raster tiles to vector data.
The flexibility of styling. And you can easily serve customers that need different default languages. This makes maps also more accessible for countries without Latin alphabet.
-
I honestly don't like using most Openstreetmap websites: slow, clunky. Is there a better way to do this faster on my own desktop?
I used https://github.com/onthegomap/planetiler and https://download.geofabrik.de, maybe it helps.
- Mapping LA's Soft-Story Building Earthquake Retrofits [OC]
- Mapping LA's Soft-Story Building Earthquake Retrofit Program [OC]
-
SQLite performance tuning: concurrent reads, multiple GBs and 100k SELECTs/s
I spent a while optimizing sqlite inserts for planetiler, this is what I came up with:
https://github.com/onthegomap/planetiler/blob/db0ab02263baaa...
It batches inserts into bulk statements and is able to do writes in the 500k+ per second range, and reads are 300-400k/s using those settings.
-
How The Post is replacing Mapbox with open source solutions
Checkout https://github.com/onthegomap/planetiler.
Super easy way to generate a MBTiles, which you can then serve directly, or further convert to PMTiles, which can be used to host vector tiles for client-side rendering using MapLibre (or other renderers).
Raster tiles are a lot harder because you have to generate them on the server, and that's a lot more resource intensive.
-
Self-Hosted Vector Tiles
I built planetiler (https://github.com/onthegomap/planetiler) for this purpose. The output up to z14 is ~80gb and depending on how big of a machine you have it takes from 30 minutes up to a few hours - no DB required, just java or docker. If you are only going to z11-12, it should be quite a bit faster/smaller.
Brandon from Protomaps is also helping add pmtiles output natively to planetiler, so you won't need a conversion step afterwards!
-
Does anyone know where to find the global raster set of buildings??
It's not raster directly, but you could use planetiler ( https://github.com/onthegomap/planetiler ) to build a full planet vector map . Then you could use something like TileServer-GL to server the vector map with a style. TileServer-gl ( https://github.com/maptiler/tileserver-gl) would provide a raster source that displays in the style you set on your vector map.
-
Ask HN: Who wants to be hired? (January 2023)
I recently left Twitter after 9 years, most recently serving as tech lead for the knowledge graph group (was 45 people). I helped apply the KG to drive a large portion of Twitter’s revenue and new product launches. In my spare time I do data visualization and web mapping, most recently https://github.com/onthegomap/planetiler
What are some alternatives?
JNR - Java Abstracted Foreign Function Layer
openmaptiles - OpenMapTiles Vector Tile Schema Implementation
JavaCPP - The missing bridge between Java and native C++
openmaptiles-tools - Tools to turn the schema into other formats
SWIG - SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages.
tilemaker - Make OpenStreetMap vector tiles without the stack
panama-foreign - https://openjdk.org/projects/panama
sequentially-generate-planet-mbtiles - Generate vector tiles for the entire planet on relatively low spec hardware.
rust-bindgen - Automatically generates Rust FFI bindings to C (and some C++) libraries.
headway - Self-hostable maps stack, powered by OpenStreetMap.
Introducing .NET Multi-platform App UI (MAUI) - .NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
operations - OSMF Operations Working Group issue tracking