Introducing BitcoinKit.framework



Summary:

Oracle provides an open source OSX JVM which is also expected to be supported in the future. However, the lack of retina support for Swing is a primary issue with the Oracle JVM which can be resolved by writing a Cocoa UI instead. JavaFX2, the current-gen GUI toolkit, offers retina support and is being actively developed. The author suggests two solutions for using bitcoinj: (a) transpiling it to C++ or (b) embedding the JVM and linking the two worlds together. Option (b) is considered less ambitious and allows for achieving user-visible results quickly. The interfaces required would be some Objective-C++ methods that receive information from the Bitcoin side, like the balance having changed or a list of transactions, and a callback into the Java side to send money. The author recommends option (b) because it is a well-trodden path and will deliver better user experience. The author is also investigating transpilation for other reasons, working with the author of j2c, which is a transpiler that converts Java to clean, readable C++11. Although it's incomplete as it just spits out stubs where the Java code calls native methods, the author considers compiling-to-C++ more appealing as every kind of app could be made easy from C++, not just GUI wallets. In response to Wendell's inquiry about how to accelerate trans-piling bitcoinj, the author suggests that they don't need much help at the moment but can keep them informed of interesting milestones. Additionally, the author mentions that bitcoinj's synchronization time is one of their main frustration points and suggests implementing SPV mode to resolve this issue. They are experimenting with trans-piling bitcoinj to C++ for this purpose.


Updated on: 2023-06-06T20:02:44.452678+00:00