In recent years, there has been growing support for more tightly coupled applications regarding heterogeneous resources. A specific way of obtaining better performance in such applications is to consider the replacement of execution entities by newer resources during the application's lifetime. Therefore, this article describes the rationale for developing jMigBSP, which is a Java programming library that offers object rescheduling for round-based applications. In this context, the proposal addresses Bulk Synchronous Parallel (BSP) applications because BSP represents one of the most often used models for writing tightly coupled parallel programs. jMigBSP's main contribution examines the rescheduling facility in two different ways: (i) using migration directives in the application code directly; and (ii) through automatic load balancing at the middleware level. Specifically, this second idea is feasible because of Java's inheritance feature, which transforms a simple jMigBSP application into a migratable one by changing only a single line of code. In addition to the description of jMigBSP, this article emphasizes the benefits of using migration over heterogeneous environments by executing scientific applications. The results indicate gains of up to 56% with object rescheduling and support the feasibility of using migration as a load balancing technique. The migration of objects to different resources becomes increasingly important for tightly coupled applications because resource availability and application behavior can vary over time on grid environments. The use of a rescheduling technique enables on-the-fly load balancing to reduce the application's time. This dynamic rescheduling could transfer objects from overloaded to underloaded resources or reallocate objects with higher communications patterns in the same cluster. Rescheduling is especially important on long-running applications, which are characterized as CPU intensive, or on large-volume data transfers, because the newly optimized organization can be used at least to amortize the migration penalties [2].Currently, research in the rescheduling field includes the definition of unified metrics for acting in response to application and resource dynamics and user-friendly programming interfaces for providing both application's modeling and replacement facilities [8,9]. Technically, we can benefit from process migration either by modifying the application source code or by using migration-aware communication middleware [10]. The former represents an explicit approach, which usually consists of including migration directives or implementing receiver-initiated load balancing algorithms inside the application's code. The latter is commonly an extension of the programming library for providing a transparent and effortless migration mechanism from the user's point of view. Considering these characteristics, this last approach represents an implicit way of providing migration from the developer's perspective.In this regard, we could ask which is the best approach...