A modern I/O library for Android, Kotlin, and Java.

Overview

Okio

See the project website for documentation and APIs.

Okio is a library that complements java.io and java.nio to make it much easier to access, store, and process your data. It started as a component of OkHttp, the capable HTTP client included in Android. It's well-exercised and ready to solve new problems.

License

Copyright 2013 Square, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • ArrayIndexOutOfBoundsException at okio.Base64.encode(Base64.java:137)

    ArrayIndexOutOfBoundsException at okio.Base64.encode(Base64.java:137)

    OS:

    Android 5.1 100%

    Devices:

    Archos 36% condor 27% Meizu 23% HUAWEI 14%

    Stacktrace:

    Fatal Exception: java.lang.ArrayIndexOutOfBoundsException: length=1840; index=320371712
           at okio.Base64.encode(Base64.java:137)
           at okio.Base64.encode(Base64.java:125)
           at okio.ByteString.base64(ByteString.java:131)
           at okhttp3.Cache$Entry.writeCertList(Cache.java:683)
           at okhttp3.Cache$Entry.writeTo(Cache.java:646)
           at okhttp3.Cache.put(Cache.java:250)
           at okhttp3.Cache$1.put(Cache.java:149)
           at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:131)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
           at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
           at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
           at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:143)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
           at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
           at okhttp3.RealCall$AsyncCall.execute(RealCall.java:147)
           at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
           at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
           at java.lang.Thread.run(Thread.java:818)
    

    Many Picasso-related tasks in the other threads.

    Can provide further info if needed

    bug platform problems 
    opened by guillaumewrobel 46
  • Okio 2.1.0 / Proguard issue

    Okio 2.1.0 / Proguard issue

    Took me a while to figure out what was the cause as the issue does not occurs on my CI but updating Okio from 2.0.0 to 2.1.0 cause proguard 6.0.3 on my windows dev machine to goes nuts.

    I fear you won't have any idea and I have no idea how to debug that but with Okio 2.1.0 + Moshi 1.7 (And 1.6) + Okhttp 3.11 + some basic okio code in kotlin in my code like

    response.body()?.use { body ->
                        return ByteArrayOutputStream().run {
                            this.sink().buffer().use { it.writeAll(body.source()) }
                            toByteArray()?.also { close() }
                        }
                    }
    

    Cause proguard to be stuck for infinite time at Optimizing (pass 1/5)... step. Gradle debug mode does not show any issue during that time, just the usual memory checks without any memory issues.

    Reverting to 2.0.0 fix the issue.

    R8 from AGP 3.2 have an issue I reported that was unfortunately not fixed in time, and R8 from 3.3a12 does compile but Moshi is no more working (was previously when I helped the Google team fixing the R8 issue) and I have not yet found (searched) the cause but maybe it's tied. (Moshi generates {} instead of correct objects).

    Edit: Tested 2.0.0 with R8 AGP 3.3a12 and same json issue so proguard issue not related to R8 issue that I'll investigate later.

    opened by Tolriq 33
  • Implementing ByteString hashing algorithms in common Kotlin

    Implementing ByteString hashing algorithms in common Kotlin

    I have a need for hashing algorithms available on ByteString outside of the JVM. Specifically, the BitTorrent protocol uses SHA-1 to verify that file pieces contain the correct data. Right now, it seems that hashing relies on the JVM MessageDigest implementation.

    As a proof of concept, I have an implementation of SHA-1 implemented on my own version of ByteString in my project Corbit. You can see it here.

    opened by kevincianfarini 29
  • Document proguard rules

    Document proguard rules

    Our users are running into problems with java.nio.file.Path. We have proguard rules that help to work around this. We should document 'em.

    See also https://github.com/square/okio/issues/42

    documentation 
    opened by swankjesse 25
  • Exception in Android L

    Exception in Android L

    10-06 12:03:39.450 1327 2243 W System.err: java.lang.NullPointerException: Attempt to read from field 'int com.android.okio.Segment.limit' on a null object reference 10-06 12:03:39.460 1327 2261 E AndroidRuntime: FATAL EXCEPTION: Thread-324 10-06 12:03:39.460 1327 2261 E AndroidRuntime: java.lang.NullPointerException: Attempt to read from field 'int com.android.okio.Segment.limit' on a null object reference 10-06 12:03:39.460 1327 2261 E AndroidRuntime: at com.android.okio.OkBuffer.write(OkBuffer.java:574) 10-06 12:03:39.460 1327 2261 E AndroidRuntime: at com.android.okio.OkBuffer.read(OkBuffer.java:610) 10-06 12:03:39.460 1327 2261 E AndroidRuntime: at com.android.okio.RealBufferedSource.read(RealBufferedSource.java:56) 10-06 12:03:39.460 1327 2261 E AndroidRuntime: at com.android.okhttp.internal.http.HttpConnection$FixedLengthSource.read(HttpConnection.java:465) 10-06 12:03:39.460 1327 2261 E AndroidRuntime: at com.android.okhttp.internal.Util.skipAll(Util.java:227) 10-06 12:03:39.460 1327 2261 E AndroidRuntime: at com.android.okhttp.internal.http.HttpConnection.discard(HttpConnection.java:235) 10-06 12:03:39.460 1327 2261 E AndroidRuntime: at com.android.okhttp.internal.http.HttpConnection$FixedLengthSource.close(HttpConnection.java:487) 10-06 12:03:39.460 1327 2261 E AndroidRuntime: at com.android.okhttp.internal.Util.closeQuietly(Util.java:97) 10-06 12:03:39.460 1327 2261 E AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.close(HttpEngine.java:574) 10-06 12:03:39.460 1327 2261 E AndroidRuntime: at com.android.okhttp.internal.http.HttpURLConnectionImpl.disconnect(HttpURLConnectionImpl.java:113) 10-06 12:03:39.460 1327 2261 E AndroidRuntime: at com.touchtype_fluency.util.HttpDownload.b(Unknown Source) 10-06 12:03:39.460 1327 2261 E AndroidRuntime: at com.touchtype_fluency.util.HttpDownload.interrupt(Unknown Source) 10-06 12:03:39.460 1327 2261 E AndroidRuntime: at com.touchtype_fluency.util.Downloader$2.run(Unknown Source) 10-06 12:03:39.460 1327 2261 E AndroidRuntime: at java.lang.Thread.run(Thread.java:818) 10-06 12:03:39.460 1327 2243 W System.err: at com.android.okio.OkBuffer.write(OkBuffer.java:574) 10-06 12:03:39.460 1327 2243 W System.err: at com.android.okio.OkBuffer.read(OkBuffer.java:610) 10-06 12:03:39.460 1327 2243 W System.err: at com.android.okio.RealBufferedSource.read(RealBufferedSource.java:56) 10-06 12:03:39.460 1327 2243 W System.err: at com.android.okhttp.internal.http.HttpConnection$FixedLengthSource.read(HttpConnection.java:465) 10-06 12:03:39.460 1327 2243 W System.err: at com.android.okhttp.internal.Util.skipAll(Util.java:227) 10-06 12:03:39.460 1327 2243 W System.err: at com.android.okhttp.internal.http.HttpConnection.discard(HttpConnection.java:235) 10-06 12:03:39.460 1327 2243 W System.err: at com.android.okhttp.internal.http.HttpConnection$FixedLengthSource.close(HttpConnection.java:487) 10-06 12:03:39.460 1327 2243 W System.err: at com.android.okio.RealBufferedSource.close(RealBufferedSource.java:204) 10-06 12:03:39.460 1327 2243 W System.err: at com.android.okio.RealBufferedSource$1.close(RealBufferedSource.java:187) 10-06 12:03:39.460 1327 2243 W System.err: at java.io.BufferedInputStream.close(BufferedInputStream.java:141) 10-06 12:03:39.460 1327 2243 W System.err: at org.apache.commons.io.input.ProxyInputStream.close(ProxyInputStream.java:102) 10-06 12:03:39.460 1327 2243 W System.err: at java.io.FilterInputStream.close(FilterInputStream.java:64) 10-06 12:03:39.460 1327 2243 W System.err: at org.apache.commons.io.IOUtils.closeQuietly(IOUtils.java:178) 10-06 12:03:39.460 1327 2243 W System.err: at com.touchtype_fluency.util.HttpDownload.downloadZip(Unknown Source) 10-06 12:03:39.460 1327 2243 W System.err: at com.touchtype_fluency.util.b$1.onDownload(Unknown Source) 10-06 12:03:39.460 1327 2243 W System.err: at com.touchtype_fluency.util.Downloader$1.run(Unknown Source) 10-06 12:03:39.460 1327 2243 W System.err: at java.lang.Thread.run(Thread.java:818)

    opened by wnsdudril 21
  • DRAFT: Add common MessageDigest implementation

    DRAFT: Add common MessageDigest implementation

    This PR is currently a work in progress to be developed out in the open.

    Tasks to be done:

    • make a nonJvmMain sourceSet for this to reside in
    • make typeAlias of MessageDigest in JVM module
    • implement SHA-1 algorithm
    • add tests

    Relevant: #740

    opened by kevincianfarini 20
  • SegmentPool blocked

    SegmentPool blocked

    Hello,

    I see a strange picture in a running jcmd Thread.print on my server app using okio 2.5.0, many threads are blocking during parallel decoding:

       java.lang.Thread.State: BLOCKED (on object monitor)
         at okio.SegmentPool.recycle(SegmentPool.kt:64)
        - waiting to lock <0x00000002cf4f3c78> (a okio.SegmentPool)
    

    In source code for SegmentPool there are @ThreadLocal and synchronized(this) at the same time. So, how does that pool intended to work?

    opened by rewlad 19
  • okio-files API

    okio-files API

    This is a tracking bug for all the work to implement Okio’s new multiplatform files API.

    • [x] Path.name
    • [x] Path.parent
    • [x] Filesystem.cwd() - current working directory
    • [x] Filesystem.list(Path) - list directory contents
    • [x] Filesystem.source(Path) - read a file
    • [x] Filesystem.sink(Path) - write a file
    • [x] Filesystem.atomicMove(Path, Path) - move a file
    • [x] Filesystem.copy(Path, Path) - move a file
    • [x] Filesystem.delete(Path) - remove a file
    • [x] Filesystem.mkdir(Path) - create a directory
    • [x] Change empty-string relative path to a single dot? (more conventional)
    • [x] Use object pinning with Buffers
    • [x] Support Windows
    • [x] Something for fsync?
    • [x] FakeFilesystem, a first-party in-memory implementation
    • [x] Support Linux
    • [x] FileMetadata
    • [x] Support Windows-like semantics for FakeFileSystem
    • [x] Implement and test inode-like semantics for FakeFileSystem
    • [x] Support Windows Paths
    • [x] Support Windows paths like C:\foo.txt in FakeFileSystem
    • [x] appendingSink()
    • [x] Support iOS
    • [x] Explore options for Node.js. Might motivate one-shot suspend functions to load an entire file as a ByteString?
    • [x] JVM methods for interop with java.io.File, java.nio.file.Path
    • [x] Support Android releases that don’t have java.nio.file
    • [x] Don’t depend on kotlinx-nodejs
    • [x] Add an experimental annotation
    • [x] Filesystem.deleteContents, to recursively delete a directory
    • [x] Filesystem.createDirectories, to recursively create a path of directories
    • [x] Filesystem.exists, or some mechanism to differentiate between ‘absent’ and ‘inaccessible’
    • [x] Good story around fault injection for testing
    • [x] FakeFilesystem should make it easier to diagnose resource leaks
    • [x] Fix bug where FakeFilesystem.appendingSink() causes the readable file to appear empty
    • [x] Fix bug where calling FakeFilesystem.createDirectories() crashes creating roots
    • [x] Path.isRoot
    • [x] Make Path comparable
    • [x] Make Filesystem.list() return paths in sorted order?
    • [x] Require FakeFilesystem.workingDirectory is an absolute path
    • [x] Test case for API as used from Java
    • [x] Figure out how to publish when no platforms support both macOS and Windows compilation
    • [x] Move FakeFilesystem to okio.testing
    • [x] Decide whether to rename Filesystem to FileSystem
    • [x] Move JVM-only functions on Paths to Path, including expect/actual work
    • [x] Final name for windowsLimitations parameter on FakeFilesystem
    • [x] Decide whether to rename Path’s slash parameter to an enum or boolean like windowsy.
    • [x] Decide on names of write and read functions
    opened by swankjesse 17
  • CipherSink & CipherSource

    CipherSink & CipherSource

    I know #260 was closed, but I don't really understand the issue, given that the initialization of the cipher is outside of the responsibility of the stream implementation. Let me know if I this is a fool's errand, but I figure this was at least worth a shot. This would be very useful for applications which treat large amounts of ciphered data, because the usage of internal segments would be a big improvement for memory usage, not to mention the simple fact of having cryptography properly included in the okio ecosystem for piping.

    opened by MartinDevi 17
  • Create a Throttler sample

    Create a Throttler sample

    Closes #490

    Created a sample Throttler which can throttle Sources and Sinks to a desired throughput. Multiple Sources and Sinks can be attached to the same Throttler and their combined throughput will not exceed the desired throughput. Multiple Throttlers can also be used on the same Source or Sink and they will all be honored.

    Added some basic unit tests to verify desired behavior.

    opened by bnorm 15
  • Kotlin extension properties for the Okio.<...>() helper methods

    Kotlin extension properties for the Okio.<...>() helper methods

    Would be nice for readability if we could use Kotlin extension properties for not having to nest the Okio.source(...), Okio.sink(...), Okio.buffer(...) methods.
    That way one could intuitively navigate to a File's BufferedSink using file.sink.buffered.

    @swankjesse's Okio file copy example on Twitter would then be reduced to this:

    from.source.use { source ->
        to.sink.buffered.use { sink ->
            sink.writeAll(source)
        }
    }
    

    Extension properties

    val Source.buffered: BufferedSource
        get() = Okio.buffer(this)
    val Sink.buffered: BufferedSink 
        get() = Okio.buffer(this)
    val OutputStream.sink: Sink
        get() = Okio.sink(this)
    val Socket.sink: Sink 
        get() = Okio.sink(this)
    val File.sink: Sink
        get() = Okio.sink(this)
    val Path.sink: Sink
        get() = Okio.sink(this)
    val File.appendingSink: Sink 
        get() = Okio.appendingSink(this)
    val InputStream.source: Source 
        get() = Okio.source(this)
    val Socket.source: Source 
        get() = Okio.source(this)
    val File.source: Source
        get() = Okio.source(this)
    val Path.source: Source
        get() = Okio.source(this)
    val BufferedSink.outputStream: OutputStream 
        get() = outputStream()
    val BufferedSource.inputStream: InputStream
        get() = inputStream()
    
    opened by heinrichreimer 15
  • fix(deps): update dependency androidx.test:runner to v1.5.1

    fix(deps): update dependency androidx.test:runner to v1.5.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | androidx.test:runner | 1.4.0 -> 1.5.1 | age | adoption | passing | confidence |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Attempt to make filesystem tests less flaky

    Attempt to make filesystem tests less flaky

    I've been observing failures like this:

    expected 2022-12-31T16:00:40.999Z in 2022-12-31T16:00:41Z..2022-12-31T16:00:43Z (relaxed from 2022-12-31T16:00:41.002314Z..2022-12-31T16:00:41.002365Z)
    
    opened by swankjesse 0
  • fix(deps): update dependency org.jetbrains.dokka:dokka-gradle-plugin to v1.7.20

    fix(deps): update dependency org.jetbrains.dokka:dokka-gradle-plugin to v1.7.20

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | org.jetbrains.dokka:dokka-gradle-plugin | 1.7.10 -> 1.7.20 | age | adoption | passing | confidence |


    Release Notes

    Kotlin/dokka

    v1.7.20: 1.7.20 Beta

    This release focuses primarily on improving user experience and HTML format in particular.

    Improvements
    General
    • Display inherited extensions (can be disabled by setting suppressInheritedMembers configuration property) (#​2625)
    • Display details for @Deprecated declarations such as deprecation message, level and proposed replacement (#​2622)
    • Display and document Enum's synthetic values() and valueOf() functions (#​2650)
    • Do not render constructors for annotation classes (#​2642)
    • Display values of Java constants (#​2609)
    • Trim spaces inside indented code blocks (#​2661, #​2232, #​2233)
    • Replace package name on the cover of package pages with "Package-level declarations" (#​2586)
    HTML format
    • Add IntelliJ icons to the navigation side menu (#​2578)
    • Add auto-scrolling to selected navigation item (#​2575)
    • Use OS color scheme to initialize light/dark mode, thanks to @​pt2121! (#​2611)
    • Update styling of all section tabs (including platform tabs) to match kotlinlang.org (#​2589)
    • Format long signatures dynamically based on client width (#​2659)
    • Add a horizontal divider between function overloads that are displayed on the same page (#​2585)
    • Add Cmd + K / Ctrl + K hotkey for opening search dialog, thanks to @​atyrin! (#​2633)
    • Make current breadcrumb element not clickable and of default font color (#​2588)
    • Update code highlighting colors (#​2670)
    • Do not render platform tabs for common-only content (#​2613)
    • Apply the same style to all KDoc tag headers, making it more consistent (#​2587)
    • Move source links into signature, especially helpful on pages with many overloads (#​2476)
    • Add inner/nested declarations to the navigation side menu (#​2597)
    • Disable copy button for signatures (#​2577)
    Javadoc format
    Kotlin-as-Java plugin
    • Render annotation blocks for transformed classes, previously ignored (#​2549)
    Gradle runner
    • Remove kotlin-stdlib dependency, which should fix errors like Module was compiled with an incompatible version of Kotlin, thanks to @​martinbonnin! (#​2570)
    Bugfixes
    • Fixed missing spaces between adjacent Markdown elements, where _try_ *this* would be rendered as trythis (#​2640)
    • Fixed dependency resolution errors when building documentation for multiplatform projects with enabled compatibility metadata variant (#​2634)
    • Fixed a rare StackOverflowError related to type-aliased native references (#​2664)
    • Fixed IllegalStateException that was caused by using JS's dynamic types (#​2645)
    • Fixed a bug where certain private declarations were rendered as public (#​2639)
    • Fixed incorrect handling of static declarations used within @see tag (#​2627)
    • Fixed Java Enum types being rendered as Any (#​2647)
    • Fixed incorrect signature generation that was caused by generic types caching (#​2619)
    • Fixed incorrect parsing of static imports in Java annotation params (#​2593)
    • Fixed sourceRoots configuration param not handling single .java files, thanks to @​2017398956! (#​2604)
    • Fixed unresponsive HTML anchor button (#​2644)
    • Fixed dokka-customFormat-example project to use up-to-date logo styles (#​2608)
    Developer experience
    Other
    • Warn users that GFM, Javadoc and Jekyll formats are in early alpha stages by printing a build log message during execution (#​2550)
    • Revise developer guides documentation that should help plugin authors and new contributors (#​2523)
    • Bump Gradle to 7.5.1, thanks to @​Goooler! (#​2618)
    • Fix spelling errors, thanks to @​FelixDombek! (#​2594)

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • fix(deps): update dependency androidx.test.ext:junit to v1.1.4

    fix(deps): update dependency androidx.test.ext:junit to v1.1.4

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | androidx.test.ext:junit | 1.1.3 -> 1.1.4 | age | adoption | passing | confidence |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Loom support.

    Loom support.

    Towards https://github.com/square/okio/issues/1169

    For discussion

    General approach from

    • https://paluch.biz/blog/183-carrier-kernel-thread-pinning-of-virtual-threads-project-loom.html
    • https://github.com/square/okhttp/pull/7367
    opened by yschimke 2
  • Watchdog's run method - synchronized block inside a try catch causing a runtime crash

    Watchdog's run method - synchronized block inside a try catch causing a runtime crash

    AsyncTimout's Watchdog's method run has a synchronized block inside a try catch.

    https://github.com/square/okio/blob/master/okio/src/jvmMain/kotlin/okio/AsyncTimeout.kt

    This is causing apps to crash when using Android Gradle Plugin 7.2.0 and above and testCoverageEnabled flag enabled.

    taking out the synchronized of the try catch should solve the issue?

    opened by randmaayan 1
Persistent (immutable) collections for Java and Kotlin

What are Dexx Collections? Dexx Collections are a port of Scala's immutable, persistent collection classes to pure Java. Persistent in the context of

Andrew O'Malley 208 Sep 30, 2022
Dremio - the missing link in modern data

Dremio Dremio enables organizations to unlock the value of their data. Documentation Documentation is available at https://docs.dremio.com. Quickstart

Dremio 1.2k Dec 31, 2022
A Java library for quickly and efficiently parsing and writing UUIDs

fast-uuid fast-uuid is a Java library for quickly and efficiently parsing and writing UUIDs. It yields the most dramatic performance gains when compar

Jon Chambers 142 Jan 1, 2023
Reactive Programming for Android

Reactive Programming for Android Agera is a set of classes and interfaces to help write functional, asynchronous, and reactive applications for Androi

Google 7.3k Jan 5, 2023
Hollow is a java library and toolset for disseminating in-memory datasets from a single producer to many consumers for high performance read-only access.

Hollow Hollow is a java library and toolset for disseminating in-memory datasets from a single producer to many consumers for high performance read-on

Netflix, Inc. 1.1k Dec 25, 2022
LWJGL is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL, Vulkan), audio (OpenAL), parallel computing (OpenCL, CUDA) and XR (OpenVR, LibOVR) applications.

LWJGL - Lightweight Java Game Library 3 LWJGL (https://www.lwjgl.org) is a Java library that enables cross-platform access to popular native APIs usef

Lightweight Java Game Library 4k Dec 29, 2022
RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.

RxJava: Reactive Extensions for the JVM RxJava is a Java VM implementation of Reactive Extensions: a library for composing asynchronous and event-base

ReactiveX 46.7k Dec 30, 2022
Jalgorithm is an open-source Java library which has implemented various algorithms and data structure

We loved Java and algorithms, so We made Jalgorithm ❤ Jalgorithm is an open-source Java library which has implemented various algorithms and data stru

Muhammad Karbalaee 35 Dec 15, 2022
A fork of Cliff Click's High Scale Library. Improved with bug fixes and a real build system.

High Scale Lib This is Boundary's fork of Cliff Click's high scale lib. We will be maintaining this fork with bug fixes, improvements and versioned bu

BMC TrueSight Pulse (formerly Boundary) 402 Jan 2, 2023
A Primitive Collection library that reduces memory usage and improves performance

Primitive-Collections This is a Simple Primitive Collections Library i started as a hobby Project. It is based on Java's Collection Library and FastUt

Speiger 26 Dec 25, 2022
A high performance caching library for Java

Caffeine is a high performance, near optimal caching library. For more details, see our user's guide and browse the API docs for the latest release. C

Ben Manes 13k Jan 5, 2023
Java port of a concurrent trie hash map implementation from the Scala collections library

About This is a Java port of a concurrent trie hash map implementation from the Scala collections library. It is almost a line-by-line conversion from

null 147 Oct 31, 2022
Java library for the HyperLogLog algorithm

java-hll A Java implementation of HyperLogLog whose goal is to be storage-compatible with other similar offerings from Aggregate Knowledge. NOTE: This

Aggregate Knowledge (a Neustar service) 296 Dec 30, 2022
A simple integer compression library in Java

JavaFastPFOR: A simple integer compression library in Java License This code is released under the Apache License Version 2.0 http://www.apache.org/li

Daniel Lemire 487 Dec 30, 2022
A Persistent Java Collections Library

PCollections A Persistent Java Collections Library Overview PCollections serves as a persistent and immutable analogue of the Java Collections Framewo

harold cooper 708 Dec 28, 2022
Library for creating In-memory circular buffers that use direct ByteBuffers to minimize GC overhead

Overview This project aims at creating a simple efficient building block for "Big Data" libraries, applications and frameworks; thing that can be used

Tatu Saloranta 132 Jul 28, 2022
Reactive Streams Utilities - Future standard utilities library for Reactive Streams.

Reactive Streams Utilities This is an exploration of what a utilities library for Reactive Streams in the JDK might look like. Glossary: A short gloss

Lightbend 61 May 27, 2021
Zero-dependency Reactive Streams publishers library

⚡️ Mutiny Zero: a zero-dependency Reactive Streams publishers library for Java Mutiny Zero is a minimal API for creating reactive-streams compliant pu

SmallRye 14 Dec 14, 2022