Releases: optimizely/java-sdk
Releases · optimizely/java-sdk
Release 3.0.0-RC
3.0.0-RC
November 7th, 2018
This is the release candidate for the 3.0 SDK, which includes a number of improvements to audience targeting along with a few bug fixes.
New Features
- Support for number-valued and boolean-valued attributes. (#213)
- Support for audiences with new match conditions for attribute values, including “substring” and “exists” matches for strings; “greater than”, “less than”, exact, and “exists” matches for numbers; and “exact”, and “exists” matches for booleans.
- Built-in datafile version compatibility checks so that SDKs will not initialize with a newer datafile it is not compatible with. (#209)
- Audience combinations within an experiment are unofficially supported in this release.
Breaking Changes
- Previously, notification listeners filtered non-string attribute values from the data passed to registered listeners. To support our growing list of supported attribute values, we’ve changed this behavior. Notification listeners will now post any value type passed as an attribute. Therefore, the interface of the notification listeners has changed to accept a
Map<String, ?>
. - Update to use Java 1.7 (#208)
Bug Fixes
- refactor: Performance improvements for JacksonConfigParser (#209)
- refactor: typeAudience.combinations will not be string encoded like audience.combinations. To handle this we created a new parsing type TypedAudience.
- fix for exact match when dealing with integers and doubles. Created a new Numeric match type.
- make a copy of attributes passed in to avoid any concurrency problems. Addresses GitHub isue in Optimizely Andriod SDK.
3.0.0-alpha
October 10th, 2018
This is the alpha release of the 3.0 SDK, which includes a number of improvements to audience targeting along with a few bug fixes.
New Features
- Support for number-valued and boolean-valued attributes. (#213)
- Support for audiences with new match conditions for attribute values, including “substring” and “exists” matches for strings; “greater than”, “less than”, “exact”, and “exists” matches for numbers; and “exact” and “exists” matches for booleans.
- Built-in datafile version compatibility checks so that SDKs will not initialize with a newer datafile it is not compatible with. (#209)
Breaking Changes
- Previously, notification listeners filtered non-string attribute values from the data passed to registered listeners. To support our growing list of supported attribute values, we’ve changed this behavior. Notification listeners will now post any value type passed as an attribute. Therefore, the interface of the notification listeners has changed to accept a
Map<String, ?>
. - Update to use Java 1.7 (#208)
Bug Fixes
- refactor: Performance improvements for JacksonConfigParser (#209)
Release 2.1.3
2.1.3 - September 21st, 2018
Bug Fixes
- fix(attributes): Filters out attributes with null values from the event payload (#204)
Release 2.1.2
August 1st, 2018
Bug Fixes
- Move serialization to LogEvent.getBody() to improve performance of API calls (#201)
2.1.1
chore: release 2.1.1 (#195) * Fix impression sent from feature experiment variation toggled off. (#193)
2.0.2
chore: release 2.0.2 (#194) * Fix impression sent from feature experiment variation toggled off. (#193)
2.1.0
June 15th, 2018
- Introduces support for bot filtering.
2.0.1 Release
2.0.1
April 25th, 2018
This is a patch release of the Optimizely SDK for 2.0.0 which is a major release.
Bug Fixes
- Checking for invalid variables passed into getEnabledFeature, Activate, getVariation and track.
2.0.0
April 12th, 2018
This major release of the Optimizely SDK introduces APIs for Feature Management. It also introduces some breaking changes listed below.
New Features
- Introduces the
isFeatureEnabled
API to determine whether to show a feature to a user or not.
Boolean enabled = optimizelyClient.isFeatureEnabled("my_feature_key", "user_1", userAttributes);
- You can also get all the enabled features for the user by calling the following method which returns a list of strings representing the feature keys:
ArrayList<String> enabledFeatures = optimizelyClient.getEnabledFeatures("user_1", userAttributes);
- Introduces Feature Variables to configure or parameterize your feature. There are four variable types:
Integer
,String
,Double
,Boolean
.
String stringVariable = optimizelyClient.getFeatureVariableString("my_feature_key", "string_variable_key", "user_1");
Integer integerVariable = optimizelyClient.getFeatureVariableInteger("my_feature_key", "integer_variable_key", "user_1");
Double doubleVariable = optimizelyClient.getFeatureVariableDouble("my_feature_key", "double_variable_key", "user_1");
Boolean booleanVariable = optimizelyClient.getFeatureVariableBoolean("my_feature_key", "boolean_variable_key", "user_1");
Breaking changes
- The
track
API with revenue value as a stand-alone parameter has been removed. The revenue value should be passed in as an entry of the event tags map. The key for the revenue tag isrevenue
and will be treated by Optimizely as the key for analyzing revenue data in results.
Map<String, Object> eventTags = new HashMap<String, Object>();
// reserved "revenue" tag
eventTags.put("revenue", 6432);
optimizelyClient.track("event_key", "user_id", userAttributes, eventTags);
- We have removed deprecated classes with the
NotificationBroadcaster
in favor of the new API with theNotificationCenter
. We have streamlined the API so that it is easily usable with Java Lambdas in Java 1.8+. We have also added some convenience methods to add these listeners. Finally, some of the API names have changed slightly (e.g.clearAllNotifications()
is nowclearAllNotificationListeners()
)
2.0.0 Beta 8
2.0.0-beta8
April 3rd, 2018
This build includes everything from 2.0.0-beta7. There are breaking changes to notification listeners.
Breaking changes
- We have removed depercated classes with the NotificationBroadcaster in favor of the new API with the NotificationCenter. We have streamlined the API so that it is easily usable with Java Lambdas. We have also added some convenience methods to add these listeners. Finally, some of the API names have changed slightly (e.g. clearAllNotifications() is now clearAllNotificationListeners())