CloudSim Plus v8.0.0 released: packages restructuring, Lombok support and code clean up

34 views
Skip to first unread message

Manoel Campos

unread,
Mar 16, 2023, 11:24:14 AM3/16/23
to CloudSim Plus: Cloud Simulation Framework
CloudSim Plus started in 2016 (7 years ago, considering the date of this new release) as a fork of CloudSim in order to provide a more well-engineered, fully extensible, easier-to-use, more accurate, and reliable cloud simulation framework. All the changes performed were intended to make the framework easier to maintain and extend, while providing an industry-standard tool to carry out cloud computing research.

After all these years, this release is a major restructuring of the project that breaks some compatibility with previous versions.
It took a lot of thought before stepping ahead to make these changes. Despite CloudSim and CloudSim Plus having lots of similarities and being easy to migrate simulation scenarios to CloudSim Plus, internally they are very different at this time.

This way, in order to break the ties with CloudSim and enable a healthier and faster evolution, this structural changes presented below were performed.

1. Packages restructuring

1.1 Moves all classes from org.cloudbus.cloudsim to org.cloudsimplus

Everything in CloudSim Plus is now under the org.cloudsimplus package.
Probably, there isn't a single class inherited from CloudSim which was not updated in CloudSim Plus. Most of them passed through a huge refactoring, remodeling and documentation improvement and extension.

Therefore, keeping these files inside the org.cloudbus.cloudsim gives the wrong impression that the classes and interfaces are the same. CloudSim Plus just exists thanks to CloudSim. This way, all the copyright notes inside the original files were kept, as required to conform to CloudSim's license. Accordingly, all the credits to the original CloudSim authors are still given.

1.2 Makes CloudSim class abstract and package private, then introduces CloudSimPlus class to be used as the Simulation engine.

In order to make it clear that the simulation scenarios are using CloudSim Plus, a new CloudSimPlus subclass was created, moving all the new code this project introduced in the CloudSim class to this new one.

2. Adds Lombok support

Adds Lombok support to reduce boilerplate code and verbosity.
Futhermore, it makes the code cleaner, concise and easier to document and maintain.
Lombok automatically changes the bytecode to introduce getters, setters, toString, equals, hashCode, builders and other features.
It needs IDE support, however all major IDEs (including VS Code Editor) currently have default support for it.

The introduction of Lombok enabled a thorough code clean-up, removing all boilerplate that was just polluting the code, making it harder to understand and maintain. Since these boilerplates were mixed inside the code that really matters, it just made it more difficult for new researchers to understand and extend the framework.

The code automatically produced by Lombok for getters, setters, equals and hashCode are well tested and avoids the introduction of bugs when the researcher has to implement them by him/herself. A smaller codebase means less code to maintain and test, increasing code coverage.

3. Renames attributes numberOfPes to pesNumber

In order to provide more concise names, Cloudlet and Vm interfaces had their getNumberOfPes() and setNumberOfPes() methods renamed to getPesNumber() and setPesNumber(). If you are passing this attribute to the Vm and Cloudlet constructor, you don't need to change anything on your simulation scenarios.


Check the new release at https://github.com/cloudsimplus/cloudsimplus/releases/tag/v8.0.0

Reply all
Reply to author
Forward
0 new messages