JDK VS Vcpkg

Compare JDK vs Vcpkg and see what are their differences.

JDK

JDK main-line development https://openjdk.org/projects/jdk (by openjdk)

Vcpkg

C++ Library Manager for Windows, Linux, and MacOS (by microsoft)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
JDK Vcpkg
188 144
18,184 21,191
2.3% 2.1%
10.0 10.0
about 8 hours ago 6 days ago
Java CMake
GNU General Public License v3.0 only MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
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.

JDK

Posts with mentions or reviews of JDK. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-18.
  • macOS 14.4 might break Java on your machine
    4 projects | news.ycombinator.com | 18 Mar 2024
    The actual text from https://bugs.java.com/bugdatabase/view_bug?bug_id=8327860 says this:

    > We have been working on a patch that switches the jit protection mode to EXEC around these potential faulting memory accesses.

    Yes, they're changing one aspect of signal handler use to work around this problem. They're not stopping the use of signal handlers in general. Hotspot continues to use signals for efficiency in general. See https://github.com/openjdk/jdk/blob/9059727df135dc90311bd476...

    4 projects | news.ycombinator.com | 18 Mar 2024
    The "safe fetch" code relies on a signal handler (either here https://github.com/openjdk/jdk/blob/48717d63cc58f693f0917e61... or here https://github.com/openjdk/jdk/blob/3c70f26b2f3fa9bc143e2506...), which is considered asynchronous delivery (i.e., delivered mid-execution, see `man 7 signal`) - which is why the `async-signal-safe` manpage simply states that it is functions that can safely be called within a signal handler.

    This is opposed to calling `sigwait` or similar to actively suspend and wait for a signal, which is not possible to do here.

    Granted, it may be that the stars align and their implementation works in practice, but that does not make it any less bizarre.

    4 projects | news.ycombinator.com | 18 Mar 2024
    The signal comes from a safe fetch, which is just a read that allows ignoring the fault as if it never happened. Such a signal is deliver synchronously, so the usual restrictions for asynchronous signal handlers do not apply.

    The code in question takes into account that the value read might be garbage. See the big comment here: https://github.com/openjdk/jdk/commit/29397d29baac3b29083b1b...

    On current CPUs and operating systems, this is not an optimization, so the code was removed earlier this year: https://bugs.openjdk.org/browse/JDK-8320317

    4 projects | news.ycombinator.com | 18 Mar 2024
    > Yes, they're changing one aspect of signal handler use to work around this problem. They're not stopping the use of signal handlers in general. Hotspot continues to use signals for efficiency in general. See https://github.com/openjdk/jdk/blob/9059727df135dc90311bd476...

    This whole thread is about SIGSEGV, and specifically their SIGSEGV handling. However, catching normal signals is not about efficiency.

    Some of their exception handling is still odd: There is no reason for a program that receives SIGILL to ever attempt continuing. But others is fine, like catching SIGFPE to just forward an exception to the calling code.

    (Sure, you could construct an argument to say that this is for efficiency if you considered the alternative to be implementing floating point in software so that all exceptions exist in user-space, but hardware floating point is the norm and such alternative would be wholly unreasonable.)

    > The wonderful thing about choosing not to care about facts is having whatever opinions you want.

    I appreciate the irony of you making such statement, proudly thinking that your opinion equals fact, and therefore any other opinion is not.

    This discussion is nothing but subjective opinion vs. subjective opinion. Facts are (hopefully, as I can only speak for myself) inputs to both our opinions, but no opinion about "good" or "bad", "nasty" or not can ever be objective. Objective code quality does not exist.

  • The Return of the Frame Pointers
    6 projects | news.ycombinator.com | 17 Mar 2024
    I remember talking to Brendan about the PreserveFramePointer patch during my first months at Netflix in 2015. As of JDK 21, unfortunately it is no longer a general purpose solution for the JVM, because it prevents a fast path being taken for stack thawing for virtual threads: https://github.com/openjdk/jdk/blob/d32ce65781c1d7815a69ceac...
  • The One Billion Row Challenge
    10 projects | news.ycombinator.com | 3 Jan 2024
  • Java JEP 461: Stream Gatherers
    3 projects | news.ycombinator.com | 3 Nov 2023
    Map doesn't implement the Collection interface.

    https://github.com/openjdk/jdk/blob/master/src/java.base/sha...

  • C++23: Removing garbage collection support
    3 projects | news.ycombinator.com | 1 Nov 2023
    C++ lets you write anything you can imagine, and the language features and standard library often facilitate that. The committee espouses the view that they want to provide many "zero [runtime] cost," abstractions. Anybody can contribute to the language, although the committee process is often slow and can be political, each release the surface area and capability of the language gets larger.

    I believe Hazard Pointers are slated for C++26, and these will add a form "free later, but not quite garbage collection" to the language. There was a talk this year about using hazard pointers to implement a much faster std::shared_ptr.

    It's a language with incredible depth because so many different paradigms have been implemented in it, but also has many pitfalls for new and old users because there are many different ways of solving the same problem.

    I feel that in C++, more than any other language, you need to know the actual implementation under the hood to use it effectively. This means knowing not just what the language specifies, but can occaissionally require knowing what GCC or Clang generate on your particular hardware.

    Many garbage collected languages are written in or have parts of their implementations in C++. See JS (https://github.com/v8/v8)and Java GC (https://github.com/openjdk/jdk/tree/36de19d4622e38b6c00644b0...)

    I am not an expert on Java (or C++), so if someone knows better or can add more please correct me.

  • Java 21 VirtualThreads vs. Clojure Lazy Seqs
    2 projects | news.ycombinator.com | 6 Oct 2023
    The JVM and Java the language have always been intertwined. The same people that develop the language, develop the VM. Lots of optimizations in the VM know specifically about Java the language idioms and implementation details. Check out this function which helps determine if instance fields are trusted: https://github.com/openjdk/jdk/blob/edd454b502b9bacde5549282...
  • Show HN: Pile Programming Language
    2 projects | news.ycombinator.com | 18 Sep 2023
    https://github.com/openjdk/jdk/blob/b16e5584abcae18fdcc4494f...

    Should just use `Path/of` directly.

    BTW, I thought I would give it a try, but my initial naive attempt hasn't yielded any results:

         nix shell nixpkgs#maven nixpkgs#jdk20

Vcpkg

Posts with mentions or reviews of Vcpkg. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-11-26.
  • Dependencies Belong in Version Control
    4 projects | news.ycombinator.com | 26 Nov 2023
    vcpkg may expire assets after 1.5 years, so achieve long-term reproducibility you will need to cache your dependencies.... Somewhere. Not sure what the expected solution is.

    https://github.com/microsoft/vcpkg/pull/30546#issuecomment-1...

  • My first Software Release using GitHub Release
    6 projects | dev.to | 24 Nov 2023
    There were various approaches recommended depending on our language and ecosystem. My classmates who developed using Node.js were recommended npm, and PyPI or poetry for Python. Since my program is written in C++, I was recommended to look into one of vcpkg or conan, but I ultimately did not use either package manager.
  • Anyone else frustrated with Conan2?
    3 projects | /r/cpp | 31 Aug 2023
    Which dependencies are not in vcpkg? We can ask them to add it. It’s pretty easy just open an issue there https://github.com/microsoft/vcpkg/issues .
  • hypergrep: A new "fastest grep" to search directories recursively for a regex pattern
    9 projects | /r/cpp | 7 Jun 2023
    CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:134 (message): Command failed: /usr/bin/cmake --build . --config Debug --target install -- -v -j25 Working Directory: /opt/vcpkg/buildtrees/hyperscan/x64-linux-dbg See logs for more information: /opt/vcpkg/buildtrees/hyperscan/install-x64-linux-dbg-out.log Call Stack (most recent call first): installed/x64-linux/share/vcpkg-cmake/vcpkg_cmake_build.cmake:74 (vcpkg_execute_build_process) installed/x64-linux/share/vcpkg-cmake/vcpkg_cmake_install.cmake:16 (vcpkg_cmake_build) ports/hyperscan/portfile.cmake:22 (vcpkg_cmake_install) scripts/ports.cmake:147 (include) error: building hyperscan:x64-linux failed with: BUILD_FAILED Please ensure you're using the latest port files with `git pull` and `vcpkg update`. Then check for known issues at: https://github.com/microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+in%3Atitle+hyperscan You can submit a new issue at: https://github.com/microsoft/vcpkg/issues/new?title=[hyperscan]+Build+error&body=Copy+issue+body+from+%2Fopt%2Fvcpkg%2Finstalled%2Fvcpkg%2Fissue_body.md You can also sumbit an issue by running (GitHub cli must be installed): gh issue create -R microsoft/vcpkg --title "[hyperscan] Build failure" --body-file /opt/vcpkg/installed/vcpkg/issue_body.md
    9 projects | /r/cpp | 7 Jun 2023
    The hyperscan update to vcpkg seems to have happened from 5.4.0 to 5.4.2 in this commit on Apr 20.
  • Configuring incomplete due to CMake Error(missing OpenCVConfig.cmake ProtobufConfig.cmake and TIFF etc.)
    2 projects | /r/fictrac | 23 May 2023
    Dear Fictrac team, I am hoping to install Fictrac in our windows 11 x64 laptop (Visual Studio 2019, cMake 3.26.4). I followed the installation guideline on github page fictrac and used the latest vcpkg
  • The Future of Boost by Vinnie Falco
    5 projects | /r/cpp | 8 May 2023
    unless you want to use clang-cl since it renames the output to make it work for MSVC which in return breaks FindBoost in cmake and requieres https://github.com/microsoft/vcpkg/pull/27694 to fix it. I have touched enough of vcpkg build scripts to know what works and what doesn't and the b2 build is one of the corners I strongly dislike.
  • CMake and Linking External libraries is a kick in the nuts if i've ever seen it.
    4 projects | /r/cpp | 3 May 2023
    And then there's also Qt which has plugins. vcpkg Qt5 is nice enough to copy the plugins for you, but not with Qt6. The official answer seems to be "use windeployqt". So I do, and it copies plugins fine. But sqlite doesn't work, despite the plugin sqldrivers/qsqlite.dll being in the right location. Turns out that neither vcpkg or windeployqt copy sqlite3.dll. I switched to static libraries after that, it's a lot slower to link, clang doesn't work for some reason (but clang-cl does) but at least I don't have to worry about DLLs.
  • Build faster with Buck2: Our open source build system
    14 projects | news.ycombinator.com | 6 Apr 2023
  • GitHub Actions Incident 29.3
    2 projects | news.ycombinator.com | 29 Mar 2023

What are some alternatives?

When comparing JDK and Vcpkg you can also consider the following projects:

conan - Conan - The open-source C and C++ package manager

CPM.cmake - 📦 CMake's missing package manager. A small CMake script for setup-free, cross-platform, reproducible dependency management.

vulkan - Haskell bindings for Vulkan

Ncurses - ncurses Git mirror

Boost.Program_options - Boost.org program_options module

meson - The Meson Build System

stb - stb single-file public domain libraries for C/C++

imgui - Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

Qt - Qt Base (Core, Gui, Widgets, Network, ...)

Google Test - GoogleTest - Google Testing and Mocking Framework

rust-sdl2 - SDL2 bindings for Rust

tensorflow - An Open Source Machine Learning Framework for Everyone