{"id":19140655,"url":"https://github.com/palexdev/virtualizedfx","last_synced_at":"2026-01-27T12:34:28.825Z","repository":{"id":42621396,"uuid":"403050628","full_name":"palexdev/VirtualizedFX","owner":"palexdev","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-13T11:19:24.000Z","size":5310,"stargazers_count":46,"open_issues_count":0,"forks_count":4,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-12-11T12:12:04.564Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/palexdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-04T12:28:02.000Z","updated_at":"2024-12-08T07:15:11.000Z","dependencies_parsed_at":"2023-02-16T20:01:04.916Z","dependency_job_id":"d0654316-99bf-45b1-b5ea-80e4b58688b0","html_url":"https://github.com/palexdev/VirtualizedFX","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palexdev%2FVirtualizedFX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palexdev%2FVirtualizedFX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palexdev%2FVirtualizedFX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palexdev%2FVirtualizedFX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/palexdev","download_url":"https://codeload.github.com/palexdev/VirtualizedFX/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230423559,"owners_count":18223435,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T07:18:21.202Z","updated_at":"2026-01-22T13:29:33.862Z","avatar_url":"https://github.com/palexdev.png","language":"Java","readme":"\u003c!--@formatter:off--\u003e\n[![HitCount](https://hits.dwyl.com/palexdev/VirtualizedFX.svg?style=flat-square)](http://hits.dwyl.com/palexdev/VirtualizedFX)\n![GitHub Workflow Status](https://github.com/palexdev/virtualizedfx/actions/workflows/gradle.yml/badge.svg)\n![Sonatype Nexus (Releases)](https://img.shields.io/nexus/r/io.github.palexdev/virtualizedfx?server=https%3A%2F%2Fs01.oss.sonatype.org\u0026style=flat-square)\n[![javadoc](https://javadoc.io/badge2/io.github.palexdev/virtualizedfx/javadoc.svg?logo=java)](https://javadoc.io/doc/io.github.palexdev/virtualizedfx)\n![GitHub issues](https://img.shields.io/github/issues-raw/palexdev/virtualizedfx?style=flat-square)\n![GitHub pull requests](https://img.shields.io/github/issues-pr/palexdev/virtualizedfx?style=flat-square)\n![GitHub](https://img.shields.io/github/license/palexdev/virtualizedfx?style=flat-square)\n---\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/palexdev/VirtualizedFX\"\u003e\n    \u003cimg src=https://imgur.com/0Ae689U.png\" alt=\"Logo\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\n\u003ch3 align=\"center\"\u003eVirtualizedFX\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n    VirtualizedFX is an open source Java library which provides virtualized components to display huge amounts of data\nwithout hurting performance by rendering only a portion of it\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/palexdev/VirtualizedFX/tree/main/wiki\"\u003e\u003cstrong\u003eExplore the wiki »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/palexdev/VirtualizedFX/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/palexdev/VirtualizedFX/issues\"\u003eRequest Feature\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\n## Table of Contents\n\n* [About the Project](#about-the-project)\n* [Getting Started](#getting-started)\n    * [Build](#build)\n    * [Usage](#usage)\n        * [Gradle](#gradle)\n        * [Maven](#maven)\n* [Documentation](#documentation)\n* [Contributing](#contributing)\n* [License](#license)\n* [Contact](#contact)\n* [Donation](#donation)\n* [Supporters](#supporters)\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n## About The Project\n\nIn UI there is a little-known concept called 'virtualization' which essentially is a technique to render only a portion\nof elements generated from a larger number of data items. Typically used to display huge collections of items in UI\ncontainers which can vary from lists, to grids, tables, trees, etc.  \nMost of the time the algorithm revolves around the concept of 'fixed size' for all the elements, to predict exactly how\nmany items and UI nodes to create and show, how many pixels we need to display all the content and more. This property\nnot only makes things easier to compute but also a lot faster.\nAs of today, VirtualizedFX only offers solutions based on such concept, but I'd like to explore 'variable size' in the future.  \n_Some articles on the matter:\n[[1]](https://medium.com/ingeniouslysimple/building-a-virtualized-list-from-scratch-9225e8bec120),\n[[2]](https://dev.to/murilovarela/make-your-virtualized-list-5cpm),\n[[3]](https://dev.to/nishanbajracharya/what-i-learned-from-building-my-own-virtualized-list-library-for-react-45ik),\n[[4]](https://betterprogramming.pub/virtualized-rendering-from-scratch-in-react-34c2ad482b16)._\n\nVirtualizedFX is not the first nor the second product that offers UI virtualization.  \nJavaFX has its own implementation, called VirtualFlow, which is an undocumented big blob class written following the\n[Spaghetti Code](https://en.wikipedia.org/wiki/Spaghetti_code) anti-pattern.  \nOther frameworks I did try had more or less the same issues, bad documentation, bad modularity, but also a high memory\nfootprint, old/unmaintained unnecessary dependencies.\n\nUnlike others, VirtualizedFX is founded on a series of principles that make it more appealing and performant.\nThe code base is well documented, well organized and fairly simple, which makes it easier to maintain and understand.\nThat said, VirtualizedFX still brings a couple of dependencies with it to make the development easier:\n[MFXCore](https://github.com/palexdev/MaterialFX/tree/rewrite/modules/core),\n[MFXEffects](https://github.com/palexdev/MaterialFX/tree/rewrite/modules/effects),\n[MFXResources](https://github.com/palexdev/MaterialFX/tree/rewrite/modules/resources).\n\n\u003c!-- GETTING STARTED --\u003e\n\n## Getting Started\n\nIn this section you can learn what do you need to use my library in your project.  \n**Note:** the new version of VirtualizedFX, as the versioning 25.x.x may suggest, requires at least JDK 25.\n\n### Build\n\nTo build VirtualizedFX, execute the following command:\n```groovy\ngradlew build\n```\n\n### Usage\n\n###### Gradle\n\n```groovy\nrepositories {\n    mavenCentral()\n}\n\ndependencies {\n    implementation 'io.github.palexdev:virtualizedfx:25+'\n}\n```\n\n###### Maven\n\n```xml\n\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.github.palexdev\u003c/groupId\u003e\n    \u003cartifactId\u003evirtualizedfx\u003c/artifactId\u003e\n    \u003cversion\u003e25.x.x\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n\u003c!-- DOCUMENTATION --\u003e\n\n## Documentation\n\nYou can read VirtualizedFX's documentation at [javadoc.io](https://javadoc.io/doc/io.github.palexdev/virtualizedfx)\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any\ncontributions you make are **greatly appreciated**.\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003c!-- LICENSE --\u003e\n\n## License\n\nDistributed under the GNU LGPLv3 License. See `LICENSE` for more information.\n\n\u003c!-- CONTACT --\u003e\n\n## Contact\n\nAlex - alessandro.parisi406@gmail.com\n\u003cbr\u003e\u003c/br\u003e\n[Discussions](https://github.com/palexdev/VirtualizedFX/discussions)\n\u003cbr\u003e\u003c/br\u003e\nProject Link: [https://github.com/palexdev/VirtualizedFX](https://github.com/palexdev/VirtualizedFX)\n\n#### Donation\n\nVirtualizedFX is complex library, because it revolves around complex concept which is UI virtualization.\nStill, by following strict rules, by documenting **everything** and testing it properly, I tried to make it as easy to\nuse and understand as possible. With the recent rewrite I can finally say I'm proud of my product, and I'm more than happy\nto share it to you, make good use of it!  \nThe issue I have always had ever since I started writing this library, is the **insane** amount of time it takes to complete\neven a single virtualized component. More than once I had to write almost all day long to get some results, and it was\nreally stressful.  \nSo, if you are using VirtualizedFX in your projects and feel like it, you can show your appreciation with a donation,\neven a small one is **greatly appreciated**.\nYou can do it on [KoFi](https://ko-fi.com/palexdev) or with [PayPal](https://www.paypal.com/paypalme/alxpar404/2)\n\n# Supporters:\n\n(If you want your github page to be linked here and you didn't specify your username in the donation, feel free to\ncontact me by email and tell me. Also contact me if for some reason you don't want to be listed here)\n\n\n\n\n\n\n\n","funding_links":["https://ko-fi.com/palexdev","https://www.paypal.com/paypalme/alxpar404/2"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalexdev%2Fvirtualizedfx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpalexdev%2Fvirtualizedfx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalexdev%2Fvirtualizedfx/lists"}