{"repo":"Miha-x64/Lychee","free":true,"listed":false,"github":"https://github.com/Miha-x64/Lychee","clone":"git clone https://github.com/Miha-x64/Lychee.git","description":"The most complete and powerful data-binding library and persistence infra for Kotlin 1.5, Android & Splitties Views DSL, JavaFX & TornadoFX, JSON, JDBC & SQLite, HTTP, SharedPreferences.","language":"Kotlin","stars":122,"topics":["reactive","properties","mapping","data-binding","subjects","kotlin","persistence","javafx","jdbc","sqlite"],"license":"Apache-2.0","category":"databases-storage","readme_excerpt":"Lychee (ex. reactive-properties) Lychee is a library to rule all the data. ToC Approach to declaring data Properties Other data-binding libraries Properties sample Sample usage in GUI application Persistence and Android SQL HTTP FAQ Adding to a project Approach to declaring data Typically, we declare data using classes: But there are some mistakes in the example above: there aren't any convenient ways to manipulate the properties of arbitrary classes: reflection does not play well with ProGuard/R8 and Graal, kapt is slow and does not play well with separate compilation, both break encapsulation by exposing field names (or values of annotations) as serialization interface, none of them knows precisely how to serialize values, they just try to guess according to field types, there are no standard annotations: every JSON library has its own annotations (Gson: @SerializedName and @TypeAdapter ), every ORM, ActiveRecord, or another database-related thing has its own, too, TypeAdapter concept is cursed: every library tries to support all standard types (how often do you need to store AtomicIntegerArray ? Gson has built-in support for it, this is crazy!), and tree shakers (a.k.a. dead code eliminators) cannot figure out which ones are actually used (this requires deep understanding of reflection API and Map machinery, 10+ years of ProGuard were not enough to get this deep); along with interface (property names and types), this also declares implementation details (backing fields). T","default_branch":null,"files":null,"tree":[],"storefront":"/r/Miha-x64","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Miha-x64/Lychee/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}