After changing 30000 Lines in 345 files and spending the free time of the last two month I can finally share SteemJ in version 0.4.0 with you.
Previous release: 0.3.4
SteemJ V0.4.0 has been released
Hello Steemians!
I am really happy to share this new SteemJ version with you which kept me busy for the last 10 weeks and is a really huge milestone to become a fully functional Steem Wallet instead of a simple API Wrapper. In total nearly 30000 lines in 375 files have been changed to achieve this goal.
For me this is a really huge milestone. When talking to some users in the comment section and in issues at GitHub I already mentioned that the project had some huge design flaw. The reason behind this is that I simply wasn’t aware of all the sneaky details of the Steem Blockchain when I’ve started this project.
In the first weeks of development I had a lot of “WTF” moments and thought that I could simplify a lot on my side – The truth is that there was a reason for all these complicated ways of implementing something in the Steem source code which I was not aware of at that point in time.
So the most important and biggest change of this release is the adjustment of the architecture of SteemJ that is now more equal to the original Steem implementation.
Beside the general change of the architecture I also finalized the renaming of “steem-api-wrapper” to “steemj”.
Source – https://ahrefs.com
This change leads to a new artifactId so from now on you need to add the following dependency:
<dependency>
<groupId>eu.bittrade.libs</groupId>
<artifactId>steemj-core</artifactId>
<version>0.4.0</version>
</dependency>
You can also find other ways of adding SteemJ to your project in the official wiki.
Another problem that user often complained about was the outdated sample. To solve this issue SteemJ has been transformed into a multi module project and consists of steemj-core
which is the actual library and steemj-sample
which is a sample application.
Due to this change I have a chance to see problems while compiling the lib and you, as a user, can be sure that the sample at GitHub is working.
Full Changelog
The biggest changes for you, as a user, have already been shared in the last weeks in some preview posts:
- Logging – Which will finally allow you to choose the logging framework of your choice.
- The market_history_api – The market_history_api has been fully implemented and added to SteemJ.
- Validation – SteemJ can validate your inputs to lower the traffic and to provide proper error messages.
- Simplified Operations – Which allow you to perform common actions in a single line.
But there was a lot more, so here is the whole changelog of SteemJ 0.4.0
Functional Updates
- Implement get_private_key_from_password to make it easier for users to get their private keys #65
- Implement a "privateKeyToWIF" method #73
- Convert the project into a multi module project and include a sample application #69
- Remove log4 implementation #70
- Rename artifact to SteemJ #66
- Check JSON String entered by the user is valid #80
- Refactor getDiscussionBy and implement DiscussionQuery object #81
- Improve code quality of PrivateKeyStorage #58
- VirtualOperation constructor should be private #86
- Fully implement market_history_api #85
- All fields that are note "ByteTransformable" should have a private constructor #90
- Add equals, hashCode and isEmpty to the Authority object #93
- Move the FollowApi into separate package #92
- Unrecognized field "author" when using getActiveVotes #72
- memo_key is String? #91
- Add the isImpossible method for the Authority object #96
- Fix FutureExtension toByteArray #97
- Add the witness_schedule_type enum #98
- Remove as much duplications as possible to simplfy maintainability #88
- Change default RPC node to wss://steemd.steemit.com #99
- Add the multiply operation to the price object #104
- Fix block_header_extensions parsing #94
- Refactor the SignedTransaction object #87
- Virtual operation "producer_report" has not been implemented yet #106
- Add missing fields in Config object #107
- Adjust CommentOptionsExtension too #108
- Use provided username as default user for operations #21
- Fix verifyAuthority behavior #111
- Make the Socket Idle Timeout configurable #114
- Implement a Client ReconnectHandler #113
- CommunicationHandler Connection has been closed. #112
- Implement SupportSteemJ feature #74
- Check for default values and apply them #16
- Update the posted comment #78
- Simplyfy the usage of Operations by implementing the Wallet methods #71
- Verify transactions "offline" #18
- Handle null values when transforming an object into a byte array #31
- Let the simplify operation methods return the operation so a user can get the generated values #118
Documentation
- The JavaDoc quality has been improved a lot and is now checked in the automated build process.
- The How To Add SteemJ To Your Project page has been updated.
- The simplified Operations are decremented in a separate Wiki page
- The logging concept is described in a separate Wiki page
Source – https://ahrefs.com
Please notice that I currently offer a reward of (at least) 25 SBD for the first one that helps me to increase the documentation of the get_discussion method – Just checkout this post if you are interested in.
General information
What is SteemJ?
SteemJ is a project that allows you to communicate with a Steem node using Java. So far, the project supports most of the API calls and is also able to broadcast most of the common operation types. Further information can be found on GitHub.
How to add it to your project?
SteemJ binaries are pushed into the maven central repository and can be integrated with a bunch of build management tools like Maven. The Wiki provides a lot of examples for the most common build tools. If you do not use a build management tool you can download the binaries as described here.
Contribute
The project became quite big and there is still a lot to do. If you want to support the project simply clone the git repository and submit a pull request. I would really appreciate it =).
git clone https://github.com/marvin-we/steem-java-api-wrapper.git
Get in touch!
Most of my projects are pretty time consuming and I always try to provide some useful stuff to the community. What keeps me going for that is your feedback and your support. For that reason I would love to get some Feedback from you <3. Just contact me here on Steemit or ping me on GitHub.
Thanks for reading and best regards,
@dez1337